首先,我通过以下查询创建了一个包含商店和交易信息的表:
CREATE TABLE main.store_transactions
(
store_id varchar(100) NOT NULL,
store_name varchar(100),
store_transaction_id varchar(100),
transaction_name varchar(100),
transaction_date timestamp,
transaction_info varchar(200),
primary_key(store_id)
)
但是后来我意识到同一家商店可能有与其相关的各种交易,而不仅仅是一项。在这种情况下,应如何实施表创建?
想到的一件事是用事务创建一个单独的表,每个事务都将store_id作为外键。然后在需要时加入。 如何在单个表中实现它?
答案 0 :(得分:1)
嗯,最优雅的方法实际上是为stores
创建一个卫星表并将其引用到store_transactions
表,例如:
CREATE TABLE stores
(
store_id varchar(100) NOT NULL PRIMARY KEY,
store_name varchar(100)
);
CREATE TABLE store_transactions
(
store_id varchar(100) NOT NULL REFERENCES stores(store_id),
store_transaction_id varchar(100),
transaction_name varchar(100),
transaction_date timestamp,
transaction_info varchar(200)
);
使用这种结构,您将有许多个交易到一个商店。
还有其他一些不太吸引人的选项,例如为stores
自定义数据类型并在表store_transactions
中创建它的数组。但是,考虑到这种方法昂贵的可维护性,我绝对不建议这样做。