我正在创建一个小型新闻网站,有人建议我看一下规范化,我照做了,虽然我理解它,但我不太清楚它是否与数据库中的所有表相关。例如,我有这个“文章”表,包括:ID-10001Featured-0or1Category-CategoryNameTitle-TitleForTheArticleArticle-Thisisthearticle.....PhotoDescription-Phototogowithblog10001PhotoName-JohnSmithPhotoLink-www.johnsmith.comAuthor-myname@gmail.comKeywords-keyword,k
从这个问题开始last_question用这张table`id`,`bbs_id`,`user_id`,`like_dislike`(15,4,2,0),(14,4,1,0),(13,3,1,0),(12,2,1,1),(11,1,2,0),(10,1,1,1);我如何才能看到个别用户喜欢或不喜欢的是什么?假设我想要一个包含所有喜欢和不喜欢的汇总表,并在另一列中显示用户x是否喜欢它。这是我试过的查询$user_id=1;SELECTbbs_id,(SELECTlike_dislikeFROMbb_ratingsWHEREuser_id={$user_id})ASthisUsersRat
我有一个网络应用程序,我有一个用户的概念,它可能会像这样进入用户表:table:userusername(varchar32)|email(varchar64)|fav_color|...我希望用户名和电子邮件是唯一的,这意味着我不能允许用户拥有相同的用户名或相同的电子邮件。我看到这类示例表总是引入一个整数自动递增主键。不知道为什么这样做,是为了以后通过外键加快查询速度吗?例如,假设我有另一个表:table:gradesusername(foreignkey?)|grade将用户名用作外键是否效率低下?我想做这样的查询:SELECTFROMgradesWHEREusername='jo
我检查了这个问题here但不幸的是,图表的链接无法正常工作,所以我被卡住了。我正在尝试为一个用户(工作、企业、个人等)发送多封电子邮件,但我不确定如何最好地处理这种情况。我想有4个表:user、email、email_type和user_has_email(用户N:M电子邮件)。我做了两张图,但我不知道哪一张更好。如果一个用户的工作和个人电子邮件地址相同(因为我不必将其存储两次),第一个图表对我有帮助。第二种选择也不错,但即使一个用户在工作、业务、个人等方面使用相同的电子邮件,我也必须将电子邮件存储两次或更多次。我打算使用相同的想法来存储地址,它比电子邮件占用更多空间,我认为图1更适合
我有一个mySQL数据库,其中包含一个包含80列和1000万行的巨大表格。数据可能存在不一致。我想以自动化和高效的方式规范化数据库。我可以使用java/c++/...来完成,但我想尽可能多地在数据库内部完成。我猜数据库之外的任何工作都会大大降低速度。关于如何做的建议?可以从哪些好的资源/教程开始?我不是在寻找关于什么是规范化的任何提示(使用谷歌找到了很多这样的东西)! 最佳答案 您需要研究列以识别“类似”实体并将它们分成单独的表格。最好的情况是,自动化工具可能会识别出某些列具有相同值的行组,但了解数据的人必须决定这些数据是否真正属于
我正在设计一个数据库并且我达到了(据我所知)ThirdNormalForm(3NF)我的一些同事告诉我一个SixthNormalForm!!我想知道如何知道数据库的规范化水平是否足够。 最佳答案 根据我的经验,很少听到有人谈论在实际生产应用程序中超越3NF。这应该足以应对几乎所有情况。 关于mysql-"practically"足够的数据库规范化级别是多少?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c
从平面文件加载数据到MySQL数据库,然后通过外键创建表之间关系的最快方法是什么?例如...我有一个格式为的平面文件:[INDIVIDUAL][POP][MARKER][GENOTYPE]"INDIVIDUAL1","CEU","rs55555","AA""INDIVIDUAL1","CEU","rs535454","GA""INDIVIDUAL1","CEU","rs555566","AT""INDIVIDUAL1","CEU","rs12345","TT"..."INDIVIDUAL2","JPT","rs55555","AT"我需要加载到四个表中:IND(id,fk_pop,na
我有存储所有客户信息的XML。每当我的PHP代码运行时,它都会将客户数据从XML插入到数据库中。这是表格。不是所有的客户都是web的,所以我把所有的客户信息直接保存到一个名为“customer”的表中。客户:customer_idint(40)primarykeyCustomerAccountNumbervarchar(60)CustomerAccountNamevarchar(255)AccountBalancedoubleInvAddressLine1varchar(500)Repvarchar(20)为了存储“网络客户”登录名和用户名,我有一个名为“Web_customers”的
我正在将数据导入到future的数据库中,该数据库将包含一个静态MyISAM表(只能从中读取)。我选择MyISAM是因为据我所知,它可以更快地满足我的要求(我对MySQL/SQL一点经验都没有)。该表将包含各种列,例如ID、姓名、性别、电话、状态...以及国家/地区、城市、街道列。现在的问题是,我应该为最后3列创建表(例如Country:Country_ID、Country_Name)并通过ID在主表中引用它们(规范化...[?]),还是将它们作为VARCHAR存储在主表(显然有重复)?我主要关心的是速度——因为不会写入表,所以数据完整性不是优先事项。唯一的操作是选择特定行或搜索符合特
我在MySQL中有以下2个表:客户(身份证,名字,姓氏......)奖金(Id,CustomerId,值(value),...)关系是一对一的,每个客户只有一个奖金。(CustomerId在奖金表中是唯一的)问:我应该删除Bonus表的Id列吗?(我想知道为什么或为什么不) 最佳答案 我会删除Bonus.Id库并使Bonus.CustomerId成为PK。这样做将消除对Bonus.CustomerId列的唯一约束的需要,因为它现在将是一个PK。如果没有Bonus.Id列,任何看表的人都会更清楚地看到一对一。您不需要Bonus.Cus