我是 SQL 的新手,正在创建一小组表。这是代码:
CREATE TABLE Patients_T
(PatientID INTEGER(11,0) NOT NULL,
PatientName VARCHAR2(30) NOT NULL,
PatientAddress VARCHAR2(40), NOT NULL,
PatientPhone INTEGER, NOT NULL,
CareCenterID INTEGER(11,0) NOT NULL,
CONSTRAINT Patient_PK PRIMARY KEY(PatientID))
CONSTRAINT Patient_FK FOREIGN KEY(CareCenterID) REFERENCES CareCenter_T(CareCenterID);
在阅读创建表的示例时,某些表会强制对主键和副键进行上述约束。我不完全明白什么时候应该将 CONSTRAINT 放在主键或辅助键上?既然您总是想要一个唯一的主键,那么它不应该一直存在吗?
最佳答案
你的问题充满了困惑。 “辅助键”不是“外键”。这是一个快速概要。
您应该始终在表上声明主键。最典型的方式是:
PatientID INTEGER(11) PRIMARY KEY
(
NOT NULL
是可选的,因为它是主键定义的一部分。)这是内联版本。您也可以在
CREATE TABLE
语句中的另一行执行此操作:PatientID INTEGER(11) NOT NULL, . . . PRIMARY KEY (PatientId)
或者使用显式的
CONSTRAINT
语句:PatientID INTEGER(11) NOT NULL, . . . CONSTRAINT pk_patients_patientid PRIMARY KEY (PatientId)
所有这三个在本质上是相同的。在某些情况下,命名约束可能很有用。
您想声明外键。这些也可以是内联的(在大多数数据库中):
CareCenterID INTEGER(11) NOT NULL REFERENCES CareCenter_T(CareCenterId)
显式声明外键的目的是让数据库保证值的一致性。
如果另一列或一组列是唯一的,那么您应该将它们声明为唯一的。
关于sql - 什么时候需要对主键和外键施加约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41751618/