使用多值MS SQL在外键中插入表

时间:2013-09-23 10:58:42

标签: mysql sql sql-server multiple-inheritance

如何在TelephoneNo上插入多个值,因为客户可能有多个电话号码?

CREATE TABLE Telephone
(TelephoneID tinyint Primary key,
TelephoneNo int)

和..

CREATE TABLE CLIENT
(ClientID smallint Primary key,
FName varchar(25),
LName varchar(25),
HomeAddress varchar(50),
TelephoneID tinyint foreign key references Telephone(TelephoneID))

以便可以像这样查看

ClientID | FName | LName | HomeAddress | TelephoneID
C-01       Harry   Sendon   1333 Cali.    1,2
C-02       Pierre  Ferrer   1515 LasV.     3

TelephoneID | Telephone
    1          7894561
    2          8945612
    3          7569696

这就是我能解释的全部内容。的xD

3 个答案:

答案 0 :(得分:3)

创建表客户端 (ClientID smallint主键, FName varchar(25), LName varchar(25), HomeAddress varchar(50))

创建表电话 (TelephoneID tinyint主键, TelephoneNo int, ClientID smallint外键引用CLIENT(ClientID))

ClientID | FName | LName |是homeAddress

C-01 Harry Sendon 1333 Cali。

C-02 Pierre Ferrer 1515 LasV。

TelephoneID |电话|客户端ID

1          7894561     C-01
2          8945612     C-01
3          7569696     C-02

答案 1 :(得分:0)

我认为这是错误的设置。目前,每个客户端都链接到一个电话ID。但是你希望每个客户都有多个电话ID。

我会改为:

CREATE TABLE Telephone
(TelephoneID tinyint Primary key,
ClientId smallint foreign key references CLIENT(ClientId),
TelephoneNo int)

CREATE TABLE CLIENT
(ClientID smallint Primary key,
FName varchar(25),
LName varchar(25),
HomeAddress varchar(50))

由此可以很容易地看出多个电话条目如何与一个客户有关。

要从中获取用户详细信息和电话号码,请执行以下操作:

SELECT CLIENT.ClientID, CLIENT.FName, CLIENT.LName,
  CLIENT.HomeAddress, Telephone.TELEPHONEID 
FROM CLIENT
JOIN TELEPHONE ON Telephone.ClientId = CLIENT.ClientId

以电话ID列表:

SELECT CLIENT.ClientID, CLIENT.FName, CLIENT.LName,
  CLIENT.HomeAddress, GROUP_CONCAT(Telephone.TELEPHONEID)
FROM CLIENT
JOIN TELEPHONE ON Telephone.ClientId = CLIENT.ClientId
GROUP BY Client.ClientId

答案 2 :(得分:0)

如果我以正确的方式理解您的问题,您希望能够为客户提供多个电话号码。

你必须考虑你的表格结构。现在,您有一个从电话到客户的1到n关系。但是,您需要从客户端到电话的1到n关系,以便为客户提供多个电话号码。

你的解决方案是:

CREATE TABLE Telephone
(TelephoneID tinyint Primary key,
TelephoneNo int,
ClientID smallint foreign key references CLIENT(ClientID))

CREATE TABLE CLIENT
(ClientID smallint Primary key,
FName varchar(25),
LName varchar(25),
HomeAddress varchar(50))

现在,您可以为多个电话号码提供相同的ClientID。