【发布时间】:2021-12-27 00:22:20
【问题描述】:
我被分配根据我一周前研究并重新创建的 ERD 在 SQL 中创建一个数据库。我正在使用这个名为“Oracle SQL Developer”的应用程序,并尝试了解如何创建表、主键、外键、序列、视图等。我在开发人员身上测试了我的草稿,他们不断出现以下错误: [在此处输入图片说明][1]
[1]:https://i.stack.imgur.com/vk0cu.png这是由于部分识别规则导致的一些语法错误。
其他错误包括缺少右括号、具有多个主键的表等。到目前为止,这是我在启动数据库方面的最大努力:
/* CREATE A TABLE FOR CUSTOMER INFORMATION FROM THE GREETING CARD CUSTOMIZATION APPLICATION */
CREATE TABLE CUSTOMER
(CUST_EMAIL VARCHAR(10) PRIMARY KEY,
CUST_NAME VARCHAR(10) NOT NULL,
CUST_PHONE NUMERIC(10) NOT NULL,
CUST_ADDRESS VARCHAR(10) NOT NULL,
CUST_CITY VARCHAR(10) NOT NULL,
CUST_STATE VARCHAR(10) NOT NULL,
CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_EMAIL)
);
/* CREATE A TABLE FOR GREETING CARD AND ENVELOPE ORDER INFORMATION */
CREATE TABLE PRODUCTS
(ORDER_NO NUMERIC(10) PRIMARY KEY,
CUST_EMAIL VARCHAR(10) FOREIGN KEY,
TRACK_ID NUMERIC(10) NOT NULL,
CONF_NO NUMERIC(10) NOT NULL,
ORDER_DATE DATE(10) NOT NULL,
SHIP_DATE DATE(10) NOT NULL,
CONSTRAINT PK_PRODUCTS PRIMARY KEY (ORDER_NO)
CONSTRAINT FK_PRODUCTS_CUST_EMAIL FOREIGN KEY (CUST_EMAIL) REFERENCES CUSTOMER);
/* CREATE A TABLE FOR PAYMENT INFORMATION */
CREATE TABLE PAYMENT
(PAY_ID NUMERIC(10) PRIMARY KEY,
ORDER_NO NUMERIC(10) FOREIGN KEY,
CARD_TYPE VARCHAR(10) NOT NULL,
PRICE NUMERIC(10) NOT NULL,
PAY_DATE DATE(10) NOT NULL,
PAY_CONF INTEGER(10) NOT NULL,
CONSTRAINT PK_PAYMENT PRIMARY KEY (PAY_ID),
CONSTRAINT FK_PAYMENT_ORDER_NO FOREIGN KEY (ORDER_NO) REFERENCES PRODUCTS);
/* CREATE A TABLE FOR PRODUCT DELIVERY INFORMATION */
CREATE TABLE DELIVERY
(DEL_ID NUMERIC(10) PRIMARY KEY,
ORDER_NO NUMERIC(10) FOREIGN KEY,
SHIP_DATE DATE(10) FOREIGN KEY,
DEL_DATE DATE(10) NOT NULL,
STATUS VARCHAR(10) NOT NULL,
DEL_MODE VARCHAR(10) NOT NULL,
INVOICE_NO INTEGER(10) NOT NULL,
CONSTRAINT PK_DELIVERY PRIMARY KEY (DEL_ID),
CONSTRAINT FK_DELIVERY_ORDER_NO FOREIGN KEY (ORDER_NO) REFERENCES PRODUCTS
CONSTRAINT FK_DELIVERY_SHIP_DATE FOREIGN KEY (SHIP_DATE) REFERENCES PRODUCTS);
/* CREATE A TABLE FOR RECIPIENT INFORMATION */
CREATE TABLE RECIPIENT
(STREET_ADDRESS VARCHAR(10) PRIMARY KEY,
NAME VARCHAR(10) NOT NULL,
CITY VARCHAR(10) NOT NULL,
STATE VARCHAR(10) NOT NULL,
ZIP INTEGER(10) NOT NULL,
CONSTRAINT PK_RECIPIENT PRIMARY KEY (STREET_ADDRESS)
);
如果应用正确地说我遗漏了一些括号,我应该把括号放在哪里?我什至在哪里有多个主键,我如何改写我的行以减少它们?如何将我的规则从部分认可变为完全认可?
这是针对关系数据库系统的大学项目。我只需要创建一些表、主键和外键,以便允许我创建序列。
【问题讨论】:
-
FOREIGN KEY本身什么也没说,您需要以TABLE (ATTRIBUTE)的方式添加该外键的引用。至少对我来说,在互联网上搜索正确的外键语法比创建一个 so 问题更容易......w3schools.com/sql/sql_foreignkey.asp -
去掉
FOREIGN KEY这个词,你已经在创建表脚本的末尾定义了约束,Create table foreign key -
如果您在 SQL Developer(数据建模器)中构建您的 ERD,它将为您生成开箱即用的有效 DDL。您知道您可以在 SQL Developer 中创建模型/图表吗?
-
如何修复无效标识符和缺少括号?
标签: sql oracle-sqldeveloper entity-relationship