我为Boat创建了一个包含以下列的表:BName, Type, Price, OName
。
但是,Type
列应为以下之一:帆船,船屋或甲板船。
如何在create table语句中反映这一点。我搜索过它,我想出了这个声明,我不确定它是否正确:
CREATE TABLE Boat
(
BName varchar(255),
BType int,
Price double,
OName varchar(255),
PRIMARY KEY (BName),
FOREIGN KEY (BType) REFERENCES BoType(ID)
);
CREATE TABLE BoType
(
ID int PRIMARY KEY,
Type varchar(255)
)
这是最好的方法吗?
答案 0 :(得分:1)
您可以尝试这样的事情:
mycol VARCHAR(10) NOT NULL CHECK (mycol IN('moe', 'curley', 'larry'))
以下是有关MSSQL" Check Constraints"的详细信息:
答案 1 :(得分:1)
这是最好的方法,只需确保使用所需的参考值(即帆船,船屋,甲板船)填充BoType
表。因为如果您使用约束,那么您拥有数据库的用户,他们不了解SQL,或者您的数据库中没有访问权限,您可以放心或者他们过于依赖您。但是,如果将其设置为单独的表,那么即使不了解SQL,系统/数据库的用户也可以通过front-end
程序添加或更改值(例如ASP
,PHP
) 。换句话说,您的设计更灵活,更具可扩展性,更不用说您的维护工作量更少了。