大数据库的模式

时间:2010-12-02 02:49:24

标签: sql mysql database database-design database-schema

我最近试图解决这个问题,但我真的不知道如何解决。 我有一个应用程序,允许用户注册和创建配置文件(尽可能多的)。 对于每个配置文件,他们可以创建广告系列(根据他们想要的每个配置文件)和每个广告系列,他们可以添加链接(链接数量有限,但无论如何它都很大)。每个链接都可以拥有自己的关键字(超过1个关键字)。

我想到的显而易见的事情是为用户提供一个表格,一个用于个人资料,一个用于广告系列,一个用于链接,一个用于关键字。但想到这一点,一些用户可能会使用相同的关键字,我不想在数据库上重复这些信息n次。我不知道这是否可以在mysql中,但我想在链接表中有一个字段,它将引用关键字表中关键字的ID。类似于一系列ID的东西。我希望这个实现是灵活的,允许我轻松检索关键字,更新“关键字数组”并执行某些计算(例如计算关键字的数量)。你能否就如何实现这个问题推荐一个可能的解决方案?

再说一遍:我正在使用mySQL和php。 谢谢。

6 个答案:

答案 0 :(得分:2)

从那个描述我想到了这些表:

user (id, ...)
campaigns (id, user_id, ...)
links (id, campaign_id, link)
keywords (link_id, keyword)

答案 1 :(得分:1)

您应该创建一个表来存储关键字,即

id (int) keyword (varchar)

并存储链接的关联表 - >关键词即。

link_id (int) keyword_id (int)

希望这有帮助!

  • 基督教

答案 2 :(得分:1)

我认为您对每个实体的表的初始实现是正确的。如果您将关键字存储在单独的表中并将它们与link_id或类似的关联,那么您可以使用常用关键字查找链接的速度比包含每个链接的所有关键字的数组快得多。

答案 3 :(得分:1)

我认为,尽管用户可能会为不同的链接选择相同的关键字。这并不能使它们在语义上相同。

如果有一个针对浮木和flotsom的广告系列并在链接上使用“shell”作为关键字,则这与我在unix实用程序广告系列中用作关键字的“shell”不同。

坚持原始的清洁和逻辑架构,不要通过解决想象中的问题使其复杂化。

答案 4 :(得分:0)

你需要有一个多对多的表来存储链接的ID,用户的id和关键字的id(我假设所有链接都有关键字)

然后,您可以通过正常的数据库操作完成您正在谈论的内容。

答案 5 :(得分:0)

有两个想法 1)让每个用户拥有自己的一组关键字 有一个用户表,并在另一个表中使用userID作为FK。

当用户无论他们所处的个人资料/广告系列需要添加链接时,都会显示该用户的关键字。

该链接仍然会通过连接表链接到keywordID,该连接表将包含keywordID和LinkID

2)全局关键字 关键字只有关键字ID和关键字 会有一个连接表来保存keywordID和LinkID,允许链接有多个关键字。

然后必须制作前端以确保用户在添加新关键字之前搜索现有关键字,这有助于防止双重上升。添加关键字的过程还应在添加

之前检查现有值