如图,这样的一个数据库,主要问题是表“VideosRented”不太理解。从需求上看,好像TransID和VideoID都是表“VideosRented”的主键。但是一个表是不是只能有一个主键呢?这是一个问题,请高手受累帮忙解答一下。另外其中的“Copy#”是不是有什么特殊的意义呢?因为很少见带有“#”符号的,所以也请解答。最好能写一下此表的SQL代码,方便我理解学习。先感谢了。另外其他三张表,我是这样写的。请高手们受累看一下是否正确,我输入MySQL是可以创建的,但是有些部分不太理解。表“Customers”:CREATE TABLE CUSTOMERS(
CUSTOMERID INT,
PHONE INT(10),
LASTNAME VARCHAR(20),
FIRSTNAME VARCHAR(20),
ADDRESS VARCHAR(50),
CITY VARCHAR(10),
STATE VARCHAR(10),
ZIPCODE INT(10),
CONSTRAINT CUSTOMERID_PK PRIMARY KEY(CUSTOMERID),
)表“Rentals”:CREATE TABLE RENTALS(
TRANSID INT,
CUSTOMERID INT,
RENTDATE DATETIME CHECK(DATETIME BETWEEN '1900-1-1' AND '2012-10-3'),
CONSTRAINT TRANSID_PK PRIMARY KEY(TRANSID),
CONSTRAINT CUSTOMERID_FK1 FOREIGN KEY(CUSTOMERID) REFERENCES CUSTOMERS(CUSTOMERID)
)
表“Videos”CREATE TABLE VIDEOS(
VIDEOID INT,
TITLE VARCHAR(50),
RENT VARCHAR(10),
CONSTRAINT VIDEOID_PK PRIMARY KEY(VIDEOID)
我从网上查的外键主键,例子使用了
CONSTRANINT XXX_PK PRIMARY KEY(XXX)和
CONSTRANINT XXX_FK1 FOREIGN KEY(XXX) REFERENCES XXX表(XXX)
这样的格式,所以我就这样写了。但是我的同学并不是这么写的。他是这样写表“Rentals”的:CREATE TABLE RENTALS(
TRANSID INT PRIMARY KEY,
CUSTOMERID INT,
RENTDATE DATETIME CHECK(DATETIME BETWEEN '1900-1-1' AND '2012-10-3'),
FOREIGN KEY(CUSTOMERID) REFERENCES CUSTOMERS(CUSTOMERID)
)也是可以运行的。CONSTRANINT的意思好像是“约束”。我不大了解什么时候该用,什么时候不用。请受累稍微解释一下使用环境。以上就是问题了。因为新接触数据库的课程,还是很不了解。希望能够得到解答。给大家添麻烦了,再次感谢。
CUSTOMERID INT,
PHONE INT(10),
LASTNAME VARCHAR(20),
FIRSTNAME VARCHAR(20),
ADDRESS VARCHAR(50),
CITY VARCHAR(10),
STATE VARCHAR(10),
ZIPCODE INT(10),
CONSTRAINT CUSTOMERID_PK PRIMARY KEY(CUSTOMERID),
)表“Rentals”:CREATE TABLE RENTALS(
TRANSID INT,
CUSTOMERID INT,
RENTDATE DATETIME CHECK(DATETIME BETWEEN '1900-1-1' AND '2012-10-3'),
CONSTRAINT TRANSID_PK PRIMARY KEY(TRANSID),
CONSTRAINT CUSTOMERID_FK1 FOREIGN KEY(CUSTOMERID) REFERENCES CUSTOMERS(CUSTOMERID)
)
表“Videos”CREATE TABLE VIDEOS(
VIDEOID INT,
TITLE VARCHAR(50),
RENT VARCHAR(10),
CONSTRAINT VIDEOID_PK PRIMARY KEY(VIDEOID)
我从网上查的外键主键,例子使用了
CONSTRANINT XXX_PK PRIMARY KEY(XXX)和
CONSTRANINT XXX_FK1 FOREIGN KEY(XXX) REFERENCES XXX表(XXX)
这样的格式,所以我就这样写了。但是我的同学并不是这么写的。他是这样写表“Rentals”的:CREATE TABLE RENTALS(
TRANSID INT PRIMARY KEY,
CUSTOMERID INT,
RENTDATE DATETIME CHECK(DATETIME BETWEEN '1900-1-1' AND '2012-10-3'),
FOREIGN KEY(CUSTOMERID) REFERENCES CUSTOMERS(CUSTOMERID)
)也是可以运行的。CONSTRANINT的意思好像是“约束”。我不大了解什么时候该用,什么时候不用。请受累稍微解释一下使用环境。以上就是问题了。因为新接触数据库的课程,还是很不了解。希望能够得到解答。给大家添麻烦了,再次感谢。
解决方案 »
- 高手帮忙解决一下,急!Aborted connection
- PowerDesigner 问题请教
- 求指导,postgresql 获取记录所在的行数
- php写入mysql中文乱码
- 向高手请教:在linux下MySQL数据集中的方案
- 如何在 MySQL 系统提示符下改变用户?
- 情况紧急,请大家解答!!!
- 安装postgresql,help~~~~~~
- phpMyAdmin-4.0.10.8-all-languages版本登陆不上且无提示
- 左联查询时,右表有多条关联左表同一记录的信息,只要有右表中有条件不符合,就不显示该所有左表记录
- mysql 的Navicat for MySQL链接
- 求助MySql Connector Net 6.5.4安装包!!!
create_definition:
col_name column_definition
| [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
[index_option] ...
| {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
[index_option] ...
| [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY]
[index_name] [index_type] (index_col_name,...)
[index_option] ...
| {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...)
[index_option] ...
| [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name,...) reference_definition
| CHECK (expr)
注意红色部分,也就是说在MYSQL中任何时候这个 [CONSTRAINT [symbol]] 在语句 [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition 都可以省略。