如图,这样的一个数据库,主要问题是表“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的意思好像是“约束”。我不大了解什么时候该用,什么时候不用。请受累稍微解释一下使用环境。以上就是问题了。因为新接触数据库的课程,还是很不了解。希望能够得到解答。给大家添麻烦了,再次感谢。

解决方案 »

  1.   

    这个建议看一下MYSQL的官方免费手册中的语法说明。 
    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 都可以省略。