【问题标题】:MySQL database setup helpMySQL数据库设置帮助
【发布时间】:2010-02-04 20:21:34
【问题描述】:

我正在制作分类广告网站... 我有这 6 张桌子: 每个类别都有子类别(或选项),您可以在下面看到。

假设用户想要发布分类,并且已将所有信息输入到必要的表单中,而我正处于必须创建 PHP 代码以将数据实际插入数据库的阶段。

我在想这样的事情:

mysql_query("INSERT INTO classifieds (classified_id, ad_id, poster_id, cat_id, area_id, headline, description) VALUES ($classified_id, '$ad_id', $poster_id, $cat_id, $area_id, '$headline', '$description')");

但我不知道从这里到哪里... 我认为海报表不应该是这样的,因为我应该如何确定poster_id 应该是什么?还是应该将其设置为auto-increment? 记住这一点,发帖人可能不会登录或任何事情,所以如果你明白我的意思,一个人拥有多个 poster_table 记录是没有问题的。

classified_id 是 PHP 生成的随机唯一值,因此始终是唯一的。

请指导我!我不知道如何正确地将表格链接在一起。

如果你有任何 Q 告诉我,我会更新这个 Q!

category table:
cat_id (PK)
cat_name

category_options table:
option_id (PK)
cat_id (FK)
option_name

option_values table:
value_id (PK)
option_id (FK)
value

classifieds table:
classified_id (PK)
ad_id (VARCHAR) something like "Bmw330ci_28238239832" which will appear in URL
poster_id (FK)
cat_id (FK)
area_id (FK)
headline
description
price
etc....

posters table:
poster_id (PK)
name 
email
tel
password

area table:
area_id (PK)
area
community

【问题讨论】:

    标签: php sql mysql database


    【解决方案1】:

    你已经有了正确的想法。当有人创建帖子并输入他们的个人信息时,首先将“海报”记录插入到海报表中。该表的“poster_id”主键应该是一个 auto_increment 字段。

    接下来,使用 PHP 的“mysql_insert_id”获取刚刚创建的新海报的 ID。该整数值将是您在“分类”表的“poster_id”外键字段中输入的数字。

    【讨论】:

      【解决方案2】:

      您通常应该将主键设置为自增字段。

      当你有链接表并且需要加入 id 时,你可以先插入到主表中,然后使用函数mysql_insert_id 来检索你刚刚插入的元素的 id。然后,您可以使用此值作为外键插入到另一个表中。

      这是一种非常标准的做事方式,所以对你来说应该没问题。

      【讨论】:

      • 但是我每张表都有一个主键,是不是都得是AI?
      • 它们不一定是,但将主键作为自动增量几乎总是一个好主意。一个明显的例外是,当您有一个中间表时,您只需要两个外键,而主键不需要额外的列。不过,我认为您的架构中没有这样的表,所以没关系。
      • 那么在我的情况下,您会将什么设置为主要?我的意思是 cat_id 不能是 PK 对吗?因为我有 15 个类别是不变的(即由我设置,不可更改)...
      • 如果您在代码中定义了一些固定的 ID,那么您可以将它们用作主键,但是如果您有任何机会可能不得不更改这些 ID,那么它不会有什么坏处添加一个具有自动增量 id 的额外列作为 PK 并在所有连接中使用它。系统上线后更改 PK 是一种痛苦的经历。您应该避免使用可能有一天需要更改的 PK。
      猜你喜欢
      • 1970-01-01
      • 2010-10-12
      • 2011-07-17
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      相关资源
      最近更新 更多