【发布时间】:2020-03-06 01:27:19
【问题描述】:
我的任务是规范化销售订单、创建关系模式并将数据输入 SQL 开发人员。
我已经标准化为 3NF 并得到了这个:
Customer(Customer_ID, Customer_name) ... 主键 = Customer_ID
Employee(Employee_ID, Employee_name) ... 主键 = Employee_ID
Sales_Order(Sales_order_ID, Employee_ID, Customer_ID, Sale_date, Order_total) ... 主键 = Sales_order_ID ... 外键 = Employee_ID, Customer_ID
Order_Line(Sales_order_ID, Product_ID, Quantity, Line_total) ... 复合键 = Sales_order_ID ... 外键 = Product_ID
Product(Product_ID, Product_name, Product_price, Product_colour) ... 主键 = Product_ID
然后我输入了表格,这是我的 SQL:
CREATE TABLE EMPLOYEE(
Employee_ID CHAR(3),
Employee_name CHAR(20),
CONSTRAINT pk_Employee PRIMARY KEY (Employee_name)
);
CREATE TABLE CUSTOMER(
Customer_ID CHAR(5),
Customer_Name CHAR(20),
CONSTRAINT pk_Customer PRIMARY KEY (Customer_ID)
);
CREATE TABLE PRODUCT(
Product_ID CHAR(5),
Product_Name CHAR(30),
Product_Colour CHAR(10),
Product_Price CHAR(5),
CONSTRAINT pk_Product PRIMARY KEY (Product_ID)
);
CREATE TABLE SALES_ORDER(
Sales_order_ID CHAR(6),
Employee_ID CHAR(3),
Customer_ID CHAR(5),
Sale_Date CHAR(10),
Order_total CHAR(7),
CONSTRAINT pk_Order PRIMARY KEY (Sales_order_ID),
CONSTRAINT fk_Order FOREIGN KEY (Employee_ID) REFERENCES EMPLOYEE (Employee_ID),
FOREIGN KEY (Customer_ID) REFERENCES CUSTOMER (Customer_ID)
);
CREATE TABLE ORDER_LINE(
Sales_order_ID CHAR(6),
Product_ID CHAR(5),
Quantity CHAR(3),
Line_total CHAR(5),
CONSTRAINT pk_Order_Line PRIMARY KEY (Sales_order_ID),
FOREIGN KEY (Product_ID) REFERENCES PRODUCT (Product_ID)
);
我可以输入表格Employee、Customer、Product、Sales_order,但无法输入Order_line
我被告知表或视图不存在!
这是什么意思?
我的归一化有误吗?
我是否错误地设计了关系模式?
任何帮助将不胜感激
【问题讨论】:
-
感谢您为我排版 Barbaros
-
那些
CHAR列应该真正使用标准VARCHAR2。CHAR是一种奇怪的 ANSI 兼容类型,提供没人需要的空白填充。 -
这是一个常见问题解答。在考虑发布之前,请始终使用谷歌搜索您的错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有或没有您的特定字符串/名称和站点:stackoverflow.com 和标签,并阅读许多答案。如果您发布问题,请使用一个短语作为标题。请参阅How to Ask 和投票箭头鼠标悬停文本。 PS 请每个帖子问一个问题。 Why is “Can someone help me?” not an actual question?
-
请在代码问题中给出minimal reproducible example--剪切&粘贴&运行代码;具有期望和实际输出(包括逐字错误消息)的示例输入(作为初始化代码);标签和版本;明确的规范和解释。这包括您可以提供的最少代码,即您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于包含 DBMS/产品和 DDL 的 SQL,其中包括约束和索引以及表格格式的初始化。
-
嗨,philipxy,如果这是一个常见问题,我深表歉意,但我没有找到重复的问题,并且花了一整天的时间试图解决我的问题,相信我。以后我会考虑周到的,感谢您提醒我或网站的规则。
标签: oracle database-normalization