数据库结构关系数据库

时间:2012-07-10 15:07:22

标签: php mysql database database-design relational-database

我正在为小型公寓管理网站创建数据库。

基本上会有一个用户登录表单,他们可以在这里插入他们的公寓,附带说明,照片。因为我将使用关系表,所以我想确保我正在创建数据库。有人可以看看并发表意见吗?

USERS:
  - id_user;
  - username;
  - password;
  - email;

APARTMENTS:
  - id_apartment;
  - id_user;
  - title;
  - description;
  - map;
  - gallery;

GALLERY_IMAGES:
  - id_gallery;
  - id_apartment;
  - image;

2 个答案:

答案 0 :(得分:1)

看起来您的设计只允许“公寓”与单个用户相关。

我建议每个表的主键是一个名为id的整数列。 对该主键的任何外键引用都将命名为tablename_id

您需要查看关系的基数。 “用户”可以与多个“公寓”相关吗? “公寓”可以与多个“用户”相关吗? “形象”可以与多个“公寓”相关吗? 等

当我们找到“多对多”关系时,我们通常会通过关系表来解决这个问题。

如果“公寓”可以与多个“用户”相关,则给定......

apartment (id PK, ... )

user (id PK, ... )

我们将添加第三个表,其中包含外键唯一的组合

user_apartment ( user_id FK, apartment_id FK, UNIQUE KEY (user_id, apartment_id) )

你似乎有一个“画廊”的概念,它与你的“形象”概念截然不同。 (根据可以“唯一标识”的实例来考虑,并且您希望存储有关的信息。)

图片可以在多个图库中吗? 画廊可以有多个图像吗? 画廊可以与多个公寓相关吗?

如果图片只属于一个图库,而图库只与一个公寓相关,那么我会实现... ...

gallery (id PK, apartment_id FK, ... )  
image (id PK, gallery_id FK, ...)

答案 1 :(得分:0)

如果这确实是你的情景:(我猜)

公寓属于用户 公寓有0或更多图像

那你为什么要介绍一个画廊的概念?

USERS:
- id_user;
- username;
- password;
- email;

APARTMENTS:
- id_apartment;
- id_user;
- title;
- description;
- map;

IMAGES:
- id_image
- id_apartment;
- image_path;

如果是这种情况,那么画廊实际上是公寓的图像,我的意思是在你的GUI上称它为...

某些用户是否有多个公寓?