python - 关于数据库设计基础的问题

标签 python sql database sqlite

我正在尝试使用 Sqlite3 来处理这个 SQL 问题。我有几个关于这个话题的问题。

数据库是否遵循一个基本结构?我很好奇我是否会将我的数据库建模为好像它是一个巨大的字典。

我思考的问题:

如果我想要一个可以提取任何城市的邮政编码或其他一般信息的程序,我正在考虑一种嵌套表格结构。即:

Countries Table:
+----+--------+--------+---------+
| US | Canada | Mexico |  Etc... |
+----+--------+--------+---------+
  |
  |
  |
  |
  | States Table:
  +---------+----------+---------+--------+
  | Alabama | Arkansas | Georgia | Etc... |
  +---------+----------+---------+--------+
                  |
                  |
                  |
                  |
                  | Cities Table:
                +-----------+---------+--------+---------+
                | Alexander | Bauxite | Benton | Etc ... |
                +-----------+---------+--------+---------+
                                           |
                                           |
                     +-----+------------+---------+------+--------------------+                    
                     | Key | population | zipcode | size | other random stuff |
                     +-----+------------+---------+------+--------------------+ 

但是嵌套太多了吗?那是一个糟糕的设计吗?最重要的是,countries 表实际上并没有做太多事情,而且我的脑海里一直认为您应该能够使用数据库轻松地完成非常复杂的事情。如果我按照我的设计去做,在我最终得到我想要的东西之前,我似乎会循环一堆东西。所以,我很好奇我是否错误地处理了整件事。

有人知道关于使用数据库的基础知识的好的入门书吗?

最佳答案

关系数据库基于 Entity-Relationship Model .如果您想掌握 RDBSM 背后的概念,请考虑先熟悉该理论。特别是关系方案(表、列、通过外键建立的关系……)是 ERM 的一个(或)应用。

要搜索的另一个关键字是Normalization。有不同的规范化“等级”和从一个等级转换到另一个等级的规则,该主题与您关于表结构的问题直接相关。一般的答案是,这取决于。一般来说,规范化有助于保持数据的一致性——但完全规范化的表结构可能会导致性能下降(例如,经常使用的查询有很多连接)。

我建议先进行更严格的规范化,然后再检查性能。然后,选择性反规范化可能有助于提高性能。

关于python - 关于数据库设计基础的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13849497/

相关文章:

html - 用于存储html的数据库

python - 将输入与嵌入和密集层合并

sql - 在 sql azure 中创建新用户/登录

python - Python 中 @classmethod 的用途是什么?

sql - 嵌套 View 性能

sql - 渲染的Json与SQL混合

mysql - VB.NET MySQL 有时会卡住整个应用程序,但并不总是卡住

sql - 确定数据库当前是否正在镜像?

python - Django 管理员 : Add <select multiple> to the *other* model in a many-to-many relationship

Python:如何遍历一个列表[Dict{List[Dict{}]}]