如何解决许多一对一表,只强制一种关系
我在设计新数据库时遇到问题。我觉得这可能很明显,并且肯定会被其他人解决,但我找不到正确的搜索词。
一个简化的(相关的)架构如下:
CREATE TABLE `asset` (
`asset_id` int PRIMARY KEY AUTO_INCREMENT,`serial_num` varchar(255) UNIQUE,`site_id` int,`type_id` int
);
CREATE TABLE `device` (
`asset_id` int PRIMARY KEY,`device_subtype` varchar(255),`ip_address` varchar(255)
);
CREATE TABLE `peripheral_device` (
`asset_id` int PRIMARY KEY,`per_device_subtype` varchar(255)
我要么需要使用字段 asset.type_id 连接表并创建多对多关系。或者我需要创建许多一对一的关系。表 device
和 peripheral_device
是资产类型。由于每种类型的资产具有截然不同的字段,因此它们无法在一张大表中使用。一个小例子是具有 IP 地址和没有 IP 地址的设备。但这扩展到计算机上的操作系统、电话上的线路类型等。
一对一关系的问题在于多个表意味着多个表中可以包含外键,但每个 asset_id
不能有多个设备类型.是否可以仅在一张表中强制执行单个条目?这通常是如何处理的?这不会是一个独特的问题吗?
编辑 替代选项:
CREATE TABLE `asset` (
`asset_id` int PRIMARY KEY AUTO_INCREMENT,`device_id` int,`pdevice_id` int,);
CREATE TABLE `peripheral_device` (
`pdevice_id` int PRIMARY KEY,);
CREATE TABLE `network_device` (
`asset_id` int PRIMARY KEY,);
ALTER TABLE `asset` ADD FOREIGN KEY (`device_id`) REFERENCES `device` (`device_id`);
ALTER TABLE `asset` ADD FOREIGN KEY (`pdevice_id`) REFERENCES
peripheral_device
(pdevice_id
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。