Sql server 乘法表需要保存到另一个表中的多条记录
我有7个与技术相关的现有表。i、 例如PC、服务器、ip电话等 现在,他们希望将每个设备的MAC地址存储在MAC地址表中。正常情况下,这对我来说不是问题,但我迷路了 在7个不同的硬件表中,一些有乘法MAC地址,而其余只有一个 我能想到的唯一方法是创建如下所示的MAC地址表Sql server 乘法表需要保存到另一个表中的多条记录,sql-server,relationship,Sql Server,Relationship,我有7个与技术相关的现有表。i、 例如PC、服务器、ip电话等 现在,他们希望将每个设备的MAC地址存储在MAC地址表中。正常情况下,这对我来说不是问题,但我迷路了 在7个不同的硬件表中,一些有乘法MAC地址,而其余只有一个 我能想到的唯一方法是创建如下所示的MAC地址表 --List of the 7 tables Create Table TableName ( TableNameID Bigint Primary Key Identity Not Null,
--List of the 7 tables
Create Table TableName (
TableNameID Bigint Primary Key Identity Not Null,
TableName Varchar(30) Not Null,
)
--The table that hold the MAC address
Create Table MacAddress (
MacAddressID Int Primary Key Identity Not Null,
MacAddress Char(25) Unique Not Null,
TableNameID Int Not Null,
HardwareTableID Int Not Null,
CONSTRAINT fk_Telephone_MacAddress FOREIGN KEY (HarewareTableID) REFERENCES Telephone(TelephoneID),
CONSTRAINT fk_Printer_MacAddress FOREIGN KEY (HarewareTableID) REFERENCES Printer(PrinterID),
)
我正在考虑创建上述内容,并将HardwareTableID作为所有其他表的外键,然后使用TableName作为标识其链接到的表的方法。我还考虑使用第三个表,通常用于多对多关系,但我仍然需要一些方法来知道记录链接到哪个表
如果有人有更好的方法,我很乐意听到
我们正在使用SQL Server 2008 R2作为数据库
希望我解释得足够好。请让我知道,如果你需要澄清,因为我有一个艰难的时间围绕着我的头
谢谢我认为你不能按你的要求添加外键。如果有多个表存储不同的设备,则设备ID上的外键不实用。tableNameId实际上是一个可强制执行的外键。还有,你真的需要为tablenameID设置BigInt吗?哎哟!!!我会在硬件表中创建一个额外的列来标识类型,而不是为每种类型创建一个不同的表。如果可能的话,我会回去改变。否则,每次获得新类型的硬件时,都必须不断创建新表。