毕设相关,E-R图里的购物车被问设计成关系是不是错了,当时没多想就承认了,回来后又看了一遍反应过来,购物车里存储了用户表主键用户名、商品表主键商品编号,类似于“谁把多少数量的什么商品加入了购物车”这样,那应该是用户和商品间的关系才对。
购物车本身也是实体,也是关系(关联商品表、用户表)
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
数据库是信息系统的核心和基础,它把信息系统中大量的数据按一定的模型组织起来,并提供存储、维护、检索数据的功能,最终使信息系统可以方便、及时、准确地从数据库中获得所需的信息。即数据库的设计目标是:为用户和各种应用系统提供一个信息基础设施和高效率的运行环境,这里的高效率代表的是冗余少、易维护和便于使用。
数据库设计大致可分为如下几个阶段:
需求分析 → 概念设计 → 逻辑设计 → 物理设计 → 数据库实现 → 运行与维护阶段。
总而言之,数据库设计是一个不断迭代和逐步求精的过程。而在这个过程中,重中之重的阶段为概念设计与逻辑设计,且本文也是围绕这两个阶段着重展开叙述的。
根据参考资料中的概念设计和实体型的介绍,购物车应该被设计为实体,因为它是一个具有独立属性和关系的对象。购物车实体应包括一些属性,例如购物车编号、用户ID等,其中购物车编号作为唯一标识也可以作为主键。对于购物车和用户、商品之间的关系,应该将其设计为关系型,因为它们之间有着明确的联系,例如一个用户可以有多个购物车和多个商品,一个购物车可以包含多个商品。购物车和用户、商品之间的关系可以用外键进行连接,例如在购物车表中存储用户ID和商品ID。以下是一个简单示例的代码实现:
-- 用户实体
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
-- 商品实体
CREATE TABLE product (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
-- 购物车实体
CREATE TABLE cart (
id INT PRIMARY KEY,
user_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL,
FOREIGN KEY (user_id) REFERENCES user(id),
FOREIGN KEY (product_id) REFERENCES product(id)
);
在这个示例中,用户和商品都被设计为实体,在购物车表中存储了用户ID和商品ID作为外键,以建立购物车和用户、商品之间的关系。购物车表还包含了一个数量属性,用于存储加入购物车的商品数量。