Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 乘法表需要保存到另一个表中的多条记录_Sql Server_Relationship - Fatal编程技术网

Sql server 乘法表需要保存到另一个表中的多条记录

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,

我有7个与技术相关的现有表。i、 例如PC、服务器、ip电话等

现在,他们希望将每个设备的MAC地址存储在MAC地址表中。正常情况下,这对我来说不是问题,但我迷路了

在7个不同的硬件表中,一些有乘法MAC地址,而其余只有一个

我能想到的唯一方法是创建如下所示的MAC地址表

--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吗?哎哟!!!我会在硬件表中创建一个额外的列来标识类型,而不是为每种类型创建一个不同的表。如果可能的话,我会回去改变。否则,每次获得新类型的硬件时,都必须不断创建新表。