MySQL主键选择原则与数据库管理基础

需积分: 0 1 下载量 24 浏览量 更新于2024-08-15 收藏 1.96MB PPT 举报
"选择主键的原则-mysql初级教程" 在设计数据库时,主键的选择是至关重要的,因为它决定了数据的唯一性和完整性。本教程将探讨选择主键的一些基本原则,特别是针对MySQL数据库系统的考虑。 首先,遵循的是**最少性原则**。这意味着主键应尽可能简单,最好选择单个字段作为主键。这样做的好处包括减少存储空间,提高查询效率,以及简化数据模型。通常,一个整数类型的主键比组合多个字段更高效,因为索引的大小直接影响到查询速度和存储成本。 其次,我们要考虑的是**稳定性原则**。主键的值一旦被赋予,就不应轻易更改,因此,应选择那些更新频率低的列作为主键。例如,一个用户ID或者订单号通常是稳定的,而如年龄、体重等随时间变化的属性则不适合用作主键。稳定的主键有助于维护数据的一致性和历史记录的准确性。 在MySQL中,常用的主键类型包括自增整数(`INT AUTO_INCREMENT`)和UUID。自增整数在单个节点的数据库中非常常见,因为它们是连续的,可以优化B树索引的性能。然而,对于分布式系统,UUID可能更为合适,因为它可以确保全局的唯一性,即使在不同的节点上插入数据。 另外,考虑到数据库设计的扩展性,主键应当是无业务含义的。这意味着主键不应该直接反映业务实体的属性,以避免业务规则变更时影响到主键的设计。比如,如果使用人的姓名作为主键,当两个人同名时就会出现问题,而且姓名可能改变,这违反了稳定性的原则。 在实际应用中,有时会遇到没有天然主键的情况,这时可以考虑创建一个代理键(surrogate key),它是一个人为生成的、无业务含义的主键,如上面提到的自增整数。 除了这些原则外,还需要注意主键的约束性,确保主键不能为空,并且在表中必须是唯一的。在MySQL中,可以通过`NOT NULL`和`UNIQUE`约束来实现这一目标。 在数据库管理方面,了解如何启动和停止MySQL服务也非常重要。如上述内容所示,可以使用`winmysqladmin`或直接在命令行执行相应的命令来启动和管理MySQL服务。在Windows环境下,`winmysqladmin`提供了一种图形化的界面,方便管理和配置MySQL服务器,而直接运行`mysqld`或`mysqld-nt`命令则更适用于命令行操作者。 选择合适的主键对于MySQL数据库的性能和稳定性至关重要。遵循最少性和稳定性原则,结合业务需求选择适当的主键类型,并理解如何管理和操作MySQL服务,都是成为一名合格的数据库管理员所必备的基础知识。

使用映射算法将 ER 架构映射到关系数据库架构。使用以下表示法表示生成的关系数据库架构:PK 表示主键,AK 表示备用键,FK 表示外键,并带有指向相应表(主键)的箭头 Book Entity (Strong) - Title (single valued, simple string) - ISBN (single valued, simple alphanumeric string), pk - Edition (single valued, simple numeric) - Date of Publication (single valued, composite concatenation of characters and numbers) - Price (single valued, simple floating point number) - Book Description (single valued, simple string) Author Entity (Strong) - Author Name - Author_id, pk Publisher Entity (Strong) - Publisher id (single value, simple numeric), pk - Publisher Name (single valued, simple string) - Address (single valued, simple string) - together the publisher name and address could make an alternate key because no to publishers can have the same name and address Customer Entity (strong) - Customer_id (single valued, simple string), pk - Name (composite one value for first, middle and last name, simple string) - Mailing Address (single valued, simple string) - Credit Card Number and Expiration Date (single value, simple numeric sequence), alternate key - Phone Number (single value, simple alphanumeric string) - Email Address (single valued, simple alphanumeric string) Shipment (strong) - Date of Shipment ( single valued, composite of strings and numbers) - Tracking Number (single valued, simple alphanumeric string), pk - Date of Expected Delivery ( single valued, compoite of strings and numbers) Order (Strong) - Order Number (single valued, simple number), pk - Mailing Address (single value, simple string) - Method of Shipment (single value, simple string) - Date and Time of Order (when the order was placed) - Total Price of the Order (multivalue, composite) Promotion (strong entity type ) - Promotion id number, pk - Percentage Discount Points (single value, simple float) - Duration of Promotion (start date and end date) ( composite attributes like the dates above) Line Item(weak entity type) - Total price for each book that is ordered (single value, two place precision float) - Quantity of each item ordered Category (strong entity) - Category ID (single value, simple numeric), pk - Category Name (single value, simple string),

2023-06-11 上传