簡體   English   中英

更改表語法分配

[英]Alter Table syntax Assignment

我有分配,因為我堅持一個問題。

將“銷售明細”表添加到數據庫中。 此表與Orders和Products表相關。 它至少顯示了訂購的產品和數量(如果您願意,可以添加其他字段,但解釋您在紙上添加它們的原因)。

在提供的圖表中沒有對此表的描述。 使用您最好的數據庫設計技巧!

Create Table SalesDetail
(
   SaleDetailID int,
   ProductID char(5),
   ManufactureID char(3) not null,
   OrderNo int,
   qtyOrdered int
   PRIMARY 
)

Alter Table SalesDetail
Add FOREIGN KEY (ProductID)
REFERENCES Products(ProductID)

我的錯誤是我無法將SalesDetail表鏈接到Products表。

Msg 1776, Level 16, State 0, Line 1
There are no primary or candidate keys in the referenced table 'Products' that match the referencing column list in the foreign key 'FK__SalesDeta__Produ__5EBF139D'.

Msg 1750, Level 16, State 0, Line 1
Could not create constraint. See previous errors.


Create Table Customers
(
CustomerNo char(4) 
Constraint ck_CustomerNoHas4positionsWithNumbers
Check(CustomerNo like'[0-9],[0-9],[0-9],[0-9]'),
Company varchar(50) not null,
CustomerRep char(3),
CreditLimt money default(20000.00),
PRIMARY KEY(CustomerNo)
)

Create Table Salesreps
(
EmployeeNo char(3)
Constraint ck_EmployeeNoHasDigits check(EmployeeNo like'[0-9],[0-9],[0-9]'),
FirstName varchar(25) not null,
LastName varchar(25) not null,
Age int,
SalesRepOffice char(2) not null,
Title varchar(50),
HireDate Date not null,
Manager char(3) not null,
Quota money,
Sales money not null,
PRIMARY KEY(EmployeeNo)
)

Create Table Offices
(
Office char(2) Constraint ck_checkOfficeHasNumbersOnly check(Office like'[0-9],[0-9]'),
City varchar(25) not null,
Region varchar(10) not null,
Manager char(3) not null,
Target money,
Sales money not null
PRIMARY KEY(Office)
)

Create Table Orders
(
OrderNo int,
OrderDate Date not null,
CustomerNo char(4) not null,
SalesRep char(3) not null
PRIMARY KEY(OrderNo)
)

Create Table Products
(
ManufactureID char(3) 
Constraint ck_ManufactureIDifItHasLettersOnly check(ManufactureID like'[a-z],[a-z],[a-z]'),
ProductID char(5) 
Constraint ck_ProductIDhasTwoLettersAndThreeNumbers check(ProductID like'[0-9],[0-9],[a-z],[a-z],[a-z]'),
Description varchar(50) not null,
Price money not null,
QtyOnHand int not null,
PRIMARY KEY(ManufactureID, ProductID)
)

- 將外鍵添加到需要它們的所有表中

Alter Table Customers
Add constraint fk_customerrep
FOREIGN KEY (CustomerRep) 
REFERENCES Salesreps(EmployeeNo)

Alter Table Salesreps
Add constraint fk_salesrepoffice
FOREIGN KEY (SalesRepOffice) 
REFERENCES Offices(Office),
constraint fk_manager
FOREIGN KEY (Manager)
REFERENCES Salesreps(EmployeeNo)

Alter Table Offices
Add constraint fk_officesmanger
FOREIGN KEY (Manager)
REFERENCES Salesreps(EmployeeNo)

Alter Table Orders
Add constraint fk_customerno
FOREIGN KEY (CustomerNo)
REFERENCES Customers(CustomerNo),
constraint fk_salesrep
FOREIGN KEY (SalesRep)
REFERENCES Salesreps(EmployeeNo)

Products具有復合鍵(ManufactureID, ProductID) ,因此您無法僅通過ProductId唯一標識產品。 因此,您必須創建一個引用ManufactureIdProductID的復合外鍵:

Alter Table SalesDetail
Add FOREIGN KEY (ManufactureId, ProductID)
REFERENCES Products(ManufactureID, ProductID)

ProductID不是錯誤所說的主鍵。 在你的代碼中

PRIMARY KEY(ManufactureID, ProductID)

這會創建一個主鍵,這兩個列組合在一起。

主鍵Products(ManufactureID, ProductID) 因此SalesDetail表應包含這兩列,並且兩者都應該是外鍵約束的一部分:

Alter Table SalesDetail
Add FOREIGN KEY (ManufactureID, ProductID)
REFERENCES Products(ManufactureID, ProductID)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM