0

我正在爲我們的加水系統創建數據庫設計,而我只是數據庫的新手。我堅持創建提供兩種不同價格的產品的表格。爲了進一步說明我的問題,這裏有一個例子,一個產品(「5加侖」)時,它是由客戶交付或買了點價格的變化。例如,一個傳送(「5加侖」)爲45個比索而上點加侖買只有40比索。有人能幫助我嗎?創建具有兩種價格的產品的數據庫設計

這裏是我的代碼至今

create table Product (
    product_id int primary key, 
    prodtype_id int, 
    product_name varchar(55), 
    product_quantity int 
) 

-----NOT SURE IF THESE TWO TABLES ARE CORRECT 
create table DeliveryPrice (
    prod_id int, 
    product_price money, 
    foreign key (prod_id) references Product 
) 

create table OnPointPrice(
    prod_id int, 
    product_price money, 
    foreign key (prod_id) references Product 
) 

回答

1

你很可能會更好只是其在Product表中的兩種價格。他們是產品的屬性,所以這就是他們所屬的地方。

此外,應指定的列NOT NULL在數據庫中(這應該是大多數)。

+0

所以,如果我想的是所選產品的價格添加到訂單和發票的客戶是否撿到其交付或現場發生了什麼? – carlplusplus

+0

你有兩個選擇。您可以爲訂單項(或整個發票)上的「交付」或「拾取」標記,或者您可以爲產品定價,但將「交付」和「拾取」視爲兩種不同的產品,就像你會5加侖一樣。的水與10加侖。的水。 –

0

因此,這是正確的嗎?

創建表產品( 的product_id int主鍵, PRODUCT_NAME VARCHAR(55)NOT NULL, product_quantity INT不爲空, pickup_price錢不爲空, delivery_price錢不是空 )

創建表的客戶( CUSTOMER_ID INT主鍵, CUSTOMER_NAME VARCHAR(255)不爲空, customer_address VARCHAR(200), customer_phone INT ) 創建表發票( inv_number int主鍵, CUSTOMER_ID爲varchar(5), 外鍵(CUSTOMER_ID)引用客戶, inv_date日期不爲空, bought_mode CHAR(10)NOT NULL )

創建表LINE( INV_NUMBER INT, 外鍵(INV_NUMBER)引用INVOICE, LINE_NUMBER INT不爲空, PRIMARY KEY(INV_NUMBER,LINE_NUMBER), line_quantity INT不爲空, line_price錢不是空 )

相關問題