mysql - 尝试设计/建模简单的数据库应用程序

标签 mysql database modeling

我正在尝试了解有关数据库交互的更多信息,这让我开始开发本地应用程序。好吧,基本上,到目前为止我所做的结果有好有坏,而且我改变了很多东西,我什至不确定我现在改变了什么,大声笑。我不太确定我的一张表是否正确,所以我决定重新开始。这就是我想让我的愚蠢的本地应用程序执行的操作。

  • 存储多达 9 个特定的 RSS 提要(我之前做过 url/链接,但我不想被我以前做的任何事情弄糊涂,所以我将其更改为 RSS 提要)
  • 默认情况下会填充 1 个供稿(因此每个用户都有一个通用供稿 - 他们可以更改)
  • 提要应按某种排序方案存储,以便可以按照输入时的相同顺序检索/打印它们。

将有一个包含 9 个文本字段的编辑屏幕,由相应的数据库条目填充,如下所示:

feed 1: <input type="text" value="http://rss.news.yahoo.com/rss/topstories"> **the default feed for everyone, but they can change it**
feed 2: <input type="text" value="http://content.usatoday.com">
feed 3: <input type="text" value="http://newsrss.bbc.co.uk/rss/newsonl.../world/rss.xml">
feed 4: <input type="text" value="">
feed 5: <input type="text" value="">
feed 6: <input type="text" value="">
feed 7: <input type="text" value="">
feed 8: <input type="text" value="">
feed 9: <input type="text" value="">
        <input type="submit" value="update">

我希望能够在此处编辑/添加新的提要并以相同的顺序检索这些提要 - 这是我之前尝试中混淆的一个重要来源。

将会有一个输出屏幕以相同的顺序输出提要 URL。

我有 2 个表,users 和现在的 feeds,我相信我的 users 表没问题,它基本上存储了一些个人信息。我认为那里的一切都应该很明显。 'state' 列将存储来自选择/下拉列表的 2 个字符的州缩写,我已将其编入索引,因为我希望能够按州搜索用户。我在检索/编辑/更新该数据时没有遇到任何问题。

CREATE TABLE users (
    user_id              SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    first_name           VARCHAR(20) NOT NULL,
    last_name            VARCHAR(40) NOT NULL,
    state                CHAR(2) NOT NULL,
    email                VARCHAR(60) NOT NULL,
    pass                 CHAR(32) NOT NULL,
    registration_date    DATETIME NOT NULL,

    PRIMARY KEY(user_id),
    UNIQUE (email),
    INDEX login (email, pass),
    INDEX state (state)                              
);

这是我的新提要表

CREATE TABLE feeds (
    user_id      SMALLINT UNSIGNED NOT NULL,
    feed_url     VARCHAR(255) NOT NULL DEFAULT 'http://rss.news.yahoo.com/rss/topstories',
    feed_id      SMALLINT UNSIGNED NOT NULL DEFAULT 1,

    PRIMARY KEY(user_id, feed_url)                                                                          
);

当用户输入新的供稿时,比方说供稿 #2,该值将被插入到 feed_url 中,而 feed_id 将插入值为 2 的值。如果输入 feed #3,将插入 feed_id,其值为 3。那应该给我一些东西让 ORDER BY 按顺序检索记录,对吧?

数据编辑屏幕应始终显示 Feed 的输入方式。
数据输出屏幕应始终显示提要的输入方式。

那么,这看起来合适吗?我是否漏掉了一些东西?我的 feed_url VARCHAR(255) 可能不是万无一失的,但我只会用短网址进行测试。它也总是很容易被撞上。

最佳答案

由于您的提要表将保存所有用户的提要,您可能需要重新考虑这一点。

您已将 feed_id 的默认值设置为 1,因此所有内容都将获得 1 - 为用户添加第二个 feed 时不会获得 2。您将需要逻辑。

也许当用户创建一个新的提要时,您会查询他们的所有记录,找到最高的提要 ID,然后将其加 1。然后您可以将其用于您的新提要 ID。

要找到你的最高 ID,你会做类似的事情(语法可能是错误的,我通常使用 T-SQL)

从 feeds 中选择 max(feed_id),其中 user_id = @user_id

我从未做过任何让用户订购商品的事情,因此您可能需要在决定任何事情之前先了解一下。

关于mysql - 尝试设计/建模简单的数据库应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/430188/

相关文章:

android - 调用网络服务时应用程序崩溃

php - 如果表 1 和表 2 或表 3 具有相同的 ID,则显示名称

mysql - Docker nfs 卷 mysql - 如何修复 : "failed to copy file info"

MySQL 单列表

java - Java 中数据的表示/建模(类与实例变量)

ruby-on-rails - 如何在在线商店应用程序中为 "products"建模

mysql - Wordpress Usermeta 选择多个键和值

c# - 如何通过它的属性读取单个 XML 节点?

mysql - 插入前触发不起作用

architecture - 如何在 UML 事件图中可视化协作事件?