我正在为像facebook结构的facebook制作数据库模式.我需要保存墙贴,共享链接,将视频内容分享到我的数据库中.直到现在我能够制作这个架构:
GO
CREATE TABLE [Wall]
(
[ID] [int] NOT NULL IDENTITY(1, 1) ,
[PostText] [nvarchar](MAX)
[PostedByUserID] [int] NULL ,
[PostedOnUserID] [int] NULL ,
[DateCreated] [datetime] NULL
)
GO
Run Code Online (Sandbox Code Playgroud)
接下来,我必须添加用于添加"共享链接"和"共享视频"功能的架构.
GO
CREATE TABLE [Wall]
(
[ID] [int] NOT NULL IDENTITY(1, 1) ,
[WallText] [nvarchar](MAX)
[PostedByUserID] [int] NULL ,
[PostedOnUserID] [int] NULL ,
[DateCreated] [datetime] NULL,
[SharedLink] [nvarchar](1024) NULL ,
[SharedLinkTitle] [nvarchar](512) NULL ,
[SharedLinkDesc] [nvarchar](512) NULL ,
[SharedLinkImageSrc] [nvarchar](512) NULL
)
GO
Run Code Online (Sandbox Code Playgroud)
现在有了这个架构:
第一种情况:插入墙柱时,[SharedLink],[SharedLinkTitle],[SharedLinkDesc],[SharedLinkImageSrc]列将插入为空,其余列将具有值.
第二种情况:当插入"链接共享"时,"[WallText]"列将作为空插入,其余列将具有值.
对于我的情况,70%的时间将发布墙贴,30%的"链接"将被共享,这意味着70%的情况[SharedLink],[SharedLinkTitle],[SharedLinkDesc],[SharedLinkImageSrc]将被插入为null .现在我担心的是,是否可以保持插入空列,或者我应该为"共享链接"目的找到一个单独的表,并将分离的表格如下:
GO
CREATE TABLE [LinkShared] …Run Code Online (Sandbox Code Playgroud) sql-server schema database-design sql-server-2005 database-schema
我想知道如何设计Dropbox的数据库架构?我正在考虑三个表:用户,文件,文件夹具有以下约束。
限制条件:
您将如何在它们之间建立关系?
我对标签数据库模式的Toxi解决方案有点不满.我正在开发一个用户可以提交项目的系统,这些项目可以有与之关联的标签.在阅读了标签之后,我找到了最适合我需求的Toxi解决方案.但是,我不完全确定我是否正在计划这个,所以我想请你就此发表意见.
我将有三个数据库.
items包含item_id和其他
tagmap使用item_id和tag_id作为外键
tags包含tag_id和tag_text
添加新项目时,我是否正确地假设将标记添加到数据库的过程如下?
这意味着我们最终会在tagmap中为每个项目的每个标记添加一个条目.这似乎是正确的,但我不禁想到有更好的方法来做到这一点,而不是那里有大量的条目......
至于编辑标签,我已经想到了以下过程,尽管我认为还有一种更好的方法,我还没有找到.
我对那里的第3点有点不满意.有没有办法让我检查是否有任何标签被删除,所以我可以有选择地删除标签而不是删除和重新添加标签?并且只是为了确定:删除tagmap行时,相关项目不会被删除,因为它指向一个外键而不是一个,对吧?
此外,我可能想要跟踪标记的使用次数,但我不想运行查询来计算每次需要显示的标记.我正在考虑让cron作业每小时或每两小时计算一次tagmap中每个tag_id的实例数,然后更新tags表中的tag_use值.这是一种正确的方法吗,还是有更好的方法?
回想起来,这是相当多的文字.Welp,比缺少信息更详细,而是提出太多问题并学习很多新事物,而不是要求太少.很有可能我今天花了太多时间研究这个问题,明天这一切都会更有意义.
提前致谢!
对于任何Oracle DBA来说,这应该是一个非常简单的问题.
我刚开始使用新的应用程序,并且我要求查看架构.我根本不熟悉Oracle或其命名约定.所以我向你提交以下内容:

我想知道:
我有以下表格.
文章表
a_id INT主要唯一
名称 VARCHAR
描述 VARCHAR
c_id INT
类别表
ID INT
cat_name VARCHAR
现在我只是使用
SELECT a_id,name,Description,cat_name FROM Articles LEFT JOIN Category ON Articles.a_id=Category.id WHERE c_id={$id}
这给了我所有属于某个类别的文章以及类别名称.
每篇文章只有一个类别.
我以类似的方式使用子类别(我有另一个名为sub_cat的表).
但是每篇文章都没有必要的子类别.它可能属于多个类别.
我现在想到标记一个包含多个类别的文章就像stackoverflow中的问题被标记一样(例如:有多个标签,如PHP,MYSQL,SQL等).
以后我必须显示(过滤)所有文章与某些标签(例如:标记为php,php + MySQL),我还必须显示标签以及文章名称,描述.
谁能帮我重新设计数据库?(我在后端使用php + MySQL)
mysql database database-design junction-table database-schema
我有一个通过ORM保存到数据库的对象.该对象有一个字符串数组,数组长度可以根据对象而变化.我想知道在数据库中存储String数组的标准做法(例如,我应该将所有字符串存储在一个字段中作为csv等.)?
我知道有几个类似于我要求的问题的答案.但他们的做法看起来并不令人信服.
我的问题是如何构建一个可以拥有书籍的类别的数据库和一个也可以有书籍的子类别?
我已经设计了一个数据库,但我不相信这种方法.如果有经验的人给了我一些建议或改进或完全不同的方法,我真的很感激.
我的表格看起来如何(记住这不是实际的代码)
TABLE Category
ID
user_id -- Foreign key from user
name
TABLE SubCategory
ID
user_id
category_id
name
Run Code Online (Sandbox Code Playgroud)
这本书的表格设计相同.
我有一个包含4列的PostgreSQL数据库表 - 标记为column_a,column_b等.我想用简单的select查询查询此表:
select * from table_name;
Run Code Online (Sandbox Code Playgroud)
我得到了一些看起来像的结果:
column_a | column_b
---------+---------
'a value'|'b_value'
Run Code Online (Sandbox Code Playgroud)
但是当我使用这个查询时:
select * from schema_name.table_name;
Run Code Online (Sandbox Code Playgroud)
我得到了完整的结果:
column_a | column_b | column_c | column_d
---------+----------+----------+---------
'a value'|'b value' |'c value' |'d_value'
Run Code Online (Sandbox Code Playgroud)
列c并d在日后添加,初始表创建后.我的问题是:当模式名称被排除在选择查询之外时,为什么数据库会忽略后面的列?
postgresql database-permissions database-schema search-path postgresql-9.2
我有简单的用户表,id设置为自动增量,也username可以在表中设置为唯一.
class Users (tag: Tag) extends Table[User](tag, "Users") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def username = column[String]("username", NotNull)
def email = column[String]("email")
def passwordHash = column[String]("password_hash")
def createdAt = column[Long]("created_at")
def updatedAt = column[Long]("updated_at")
def lastLoggedInAt = column[Long]("last_logged_in_at")
override def * = (id.?, username, email, passwordHash, createdAt, updatedAt, lastLoggedInAt) <> (User.tupled, User.unapply)
def idxUsername = index("idx_username", username, unique = true)
}
Run Code Online (Sandbox Code Playgroud)
但是当使用slick(db.run(users.schema.create))创建表时,不会idx_username在数据库上创建唯一索引
这是架构的create语句users.schema.createStatements.foreach(println):
create table `Users` (`id` INTEGER …Run Code Online (Sandbox Code Playgroud) 我正在尝试破译我的老师帮助我制作的数据库ER图.我主要是想弄清楚如何构建所需的表并正确组合它们.
所讨论的ER图用于在线调查问卷,其中每个问题都基于前一个问题给出的答案,最终导致解决方案/结束.
每个问题都可以有多个答案,同一个问题可以有多个不同的答案,具体取决于前面给出的答案.
组合表显示哪些答案与哪个问题相关联,以及下一个问题应该是什么,如果给出了具体答案,最终会得出解决方案.
ER图如下所示:
我不明白的是:
解决方案/问题表将包含问题和解决方案,这些问题和解决方案可能有不同的实体,但我不明白这是如何完成的?什么是D?
在导致一路口表,因为它是许多人之间有许多连接答案和问题/解决方案,但是为什么呢?它们是否未在组合表中连接? - 如果选择了具体的答案,那个表是否不包含知道哪些答案与哪个问题相关所需的所有信息以及下一个问题?
我很难搞清楚如何构建这个数据库,以便它可以按需运行.
database-schema ×10
database ×5
mysql ×5
orm ×1
postgresql ×1
scala ×1
schema ×1
search-path ×1
slick-3.0 ×1
sql ×1
sql-server ×1
tagging ×1