标签: normalization

多个外键

我的数据库设计以前是相当线性的,所以我很难理解这可能是一个非常容易解决的问题.

我有一个"POSTS"表,其中包含可能是"CATEGORY"或"TOPIC"子项的帖子.定义"POSTS"表的外键的最佳方法是什么?

我想我可以有一个名为POST_CATEGORY_ID的列和一个名为"POST_TOPIC_ID的字段,它可以是可空的,但这听起来不对.当然有一个我想念的简单解决方案!

database-design normalization

6
推荐指数
1
解决办法
1520
查看次数

这些表是否符合3NF数据库规范化?

AUTHOR 表

  • Author_ID,PK
  • First_Name
  • Last_Name

TITLES 表

  • TITLE_ID,PK
  • NAME
  • Author_ID,FK

DOMAIN 表

  • DOMAIN_ID,PK
  • NAME
  • TITLE_ID,FK

READERS 表

  • READER_ID,PK
  • First_Name
  • Last_Name
  • ADDRESS
  • CITY_ID,FK
  • PHONE

CITY 表

  • CITY_ID,PK
  • NAME

BORROWING 表

  • BORROWING_ID,PK
  • READER_ID,fk
  • TITLE_ID,fk
  • DATE

HISTORY 表

  • READER_ID
  • TITLE_ID
  • DATE_OF_BORROWING
  • DATE_OF_RETURNING

    1. 这些表是否符合3NF数据库规范化?
    2. 如果2位作者为同一个头衔合作怎么办?
    3. 列Addresss应该拥有自己的表吗?
    4. 当读者借书时,我在BORROWING表中输入.他退回书后,我删除了那个条目,然后在HISTORY表中另外输入一个条目.这是一个好主意吗?我制止任何规则吗?我应该用一个带有DATE_OF_RETURNING列的单个BORROWING表吗?

sql database normalization

6
推荐指数
1
解决办法
1186
查看次数

规范化这个数据库:在这种情况下理想的是什么?

我正在设计一个角色有很多项目的游戏,这些项目可以是多种类型.有一个角色表,以及按类型细分的十二个不同的可能项目表(例如武器,装甲和各种其他项目类型).

我想创建一个表来保存这些项类型的实例(基本上是一个字符的项表),每一行都有一个来自字符表的外键,以指示哪个字符拥有该项的所有权.

起初我想我会在字符的项目表中创建外键 - 十二个项目表中的每一个都有一个键.但由于每个项目只能是一个"类型",这将导致每行中有11个空字段,这似乎是错误的.

什么是更好的方法?我还没有构建数据库,所以我可以接受其他不使用十二个项目表的库存想法,但是知道这一点:管理界面将允许用户根据需要添加/删除/修改每种类型的项目.

另外,我想坚持最好的规范化实践,所以我会忽略不可避免的"谁在乎?只做有效的工作并使用无效字段."

database-design normalization

6
推荐指数
1
解决办法
484
查看次数

我的数据是否正常化?

我正在制作一个简单的测验数据库,其中一个问题有一个答案和一个或多个图像文件,属于一个子主题,而该子主题又属于一个主题.此外,每个组可能属于三个级别之一.

这就是我设置数据库的方式:

QUESTION
-------------------
question_id      pk
question    varchar
answer      varchar
subtopic_id foreign_key

MEDIA
-------------------
media_id         pk
file_name   varchar
question_id foreign_key


SUBTOPIC
-------------------
subtopic_id      pk
subtopic    varchar
topic_id    foreign_key


TOPIC
-------------------
topic_id         pk
topic       varchar
level       choices(1,2,3)
Run Code Online (Sandbox Code Playgroud)

我的数据库设计得当吗?如果没有,我怎样才能让它变得更好?

编辑:我希望显示一个问题(和图像,如果存在),并将用户的答案与正确答案进行比较.我需要主题和子主题才能显示正确的问题.

Edit2:添加了你的建议.

Edit3:更新了数据库描述.

请看一下这个图: 图

一些说明:

  1. 级别可以具有唯一(主题1和3)和共享(主题2)主题.
  2. 主题可以包含一个或多个子主题,但子主题不能属于多个主题.
  3. 子主题可以有一个或多个问题,但问题只属于一个子主题.两个问题(问题2和3)可能具有相同的子主题和主题,但它们的级别可能不同.虽然,主题(主题2)和副主题(子主题2和3)可能属于许多级别(级别1和级别2),但某些子主题仅包含级别1的问题,而其他子主题包含级别2的问题(问题4)(子主题3) .
  4. 一个问题只能有一个答案,答案不能属于另一个问题.
  5. 答案(或它的问题)可以有一个可选的图像文件,该图像文件可以用于其他问题.

谢谢.

database-design normalization

6
推荐指数
1
解决办法
1938
查看次数

SSE归一化比简单逼近慢?

我试图规范化4d向量.

我的第一个approch是使用SSE内在函数 - 这为我的向量算法提供了2倍的速度提升.这是基本代码:( v.v4是输入)(使用GCC)(所有内容都是内联的)

//find squares
v4sf s = __builtin_ia32_mulps(v.v4, v.v4);
//set t to square
v4sf t = s;
//add the 4 squares together
s   = __builtin_ia32_shufps(s, s, 0x1B);
t      = __builtin_ia32_addps(t, s);
s   = __builtin_ia32_shufps(s, s, 0x4e);
t      = __builtin_ia32_addps(t, s);
s   = __builtin_ia32_shufps(s, s, 0x1B);
t      = __builtin_ia32_addps(t, s);
//find 1/sqrt of t
t      = __builtin_ia32_rsqrtps(t);
//multiply to get normal
return Vec4(__builtin_ia32_mulps(v.v4, t));
Run Code Online (Sandbox Code Playgroud)

我检查了反汇编,它看起来像我期待的.我没有看到任何大问题.

无论如何,然后我尝试使用近似值:(我从谷歌得到这个)

float x = (v.w*v.w) + (v.x*v.x) + (v.y*v.y) + (v.z*v.z);
float xhalf …
Run Code Online (Sandbox Code Playgroud)

c++ profile sse normalization approximation

6
推荐指数
1
解决办法
1891
查看次数

为缓存原因规范化布尔表达式.有没有比真值表更有效的方法?

我当前的项目是一个带有布尔检索功能的高级标签数据库.正在使用类似的布尔表达式查询记录(例如在音乐数据库中):

funky-music and not (live or cover)
Run Code Online (Sandbox Code Playgroud)

这应该会产生音乐数据库中所有时髦的音乐,但不能播放歌曲的现场或封面版本.

当涉及到缓存时,问题是存在等同但结构不同的查询.例如,应用de Morgan的规则,上面的查询可以这样写:

funky-music and not live and not cover
Run Code Online (Sandbox Code Playgroud)

例如,当通过散列查询字符串实现缓存时,它将产生完全相同的记录,但会产生中断缓存.

因此,我的第一个目的是创建查询的真值表,然后可以将其用作缓存键,因为等效表达式构成相同的真值表.不幸的是,这是不切实际的,因为真值表随着输入(标签)的数量呈指数增长,我不想限制一个查询中使用的标签数量.

另一种方法可以是遍历语法树,应用由布尔代数定义的规则来形成(最小的)规范化表示,这似乎也很棘手.

因此,整体问题是:是否有一种实用的方法来实现等效查询的识别,而无需电路最小化或真值表(编辑:或任何其他NP难的算法)?

ne plus ultra将识别已经缓存的子查询,但这不是主要目标.

algorithm caching boolean-logic traversal normalization

6
推荐指数
1
解决办法
1894
查看次数

PHP 5.3找不到normalizer_normalize()

我试图使用PHP 5.3中引入的normalizer_normalize()函数(说文档),但我不能使用它:

$ php -r 'echo normalizer_normalize("tést");'
PHP Fatal error:  Call to undefined function normalizer_normalize()
in Command line code on line 1
Run Code Online (Sandbox Code Playgroud)

我检查了我的PHP版本,但它是5.3:

$ php --version
PHP 5.3.6 (cli) (built: Sep 12 2011 18:02:42)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么PHP找不到它?

php unicode normalization unicode-normalization php-5.3

6
推荐指数
1
解决办法
3439
查看次数

规范化ASCII字符

我需要规范化一个字符串,如"quée",我似乎无法将扩展的ASCII字符(如é,á,í等)转换为罗马/英语版本.我已经尝试了几种不同的方法但到目前为止没有任何工作.这个一般主题有相当多的材料,但我似乎无法找到这个问题的工作答案.

这是我的代码:

#transliteration solution (works great with standard chars but doesn't find the 
#special ones) - I've tried looking for both \x{130} and é with the same result.
$mystring =~ tr/\\x{130}/e/;

#converting into array, then iterating through and replacing the specific char
#( same result as the above solution )
my @breakdown = split( "",$mystring );

foreach ( @breakdown ) {
    if ( $_ eq "\x{130}" ) {
        $_ = "e";
        print "\nArray Output: @breakdown\n";
    }
    $lowercase = join( "",@breakdown …
Run Code Online (Sandbox Code Playgroud)

perl ascii normalization

6
推荐指数
2
解决办法
3500
查看次数

如何使用参考RGB值标准化RGB值

我想在许多光照条件下获得图像的RGB值.为了获得某种中立的场景,我想用一些预定义图像的RGB值来标准化RGB值.

让我解释.我有6个预定义的图像,我知道它们的确切平均RGB值.现在我将在不同的光照条件下拍摄未知图像.我还将在相同条件下拍摄预定义的6张图像.现在我的目标是通过将预定义图像的已知参考rgb值与从摄像机图像计算的值进行比较来定义归一化公式.使用此归一化参数,我将校准未知图像的RGB值.因此,无论光照条件如何,我都能以中性方式从未知图像中获得平均RGB值.

如何在Java中轻松实现这一目标.

java graphics image image-processing normalization

6
推荐指数
1
解决办法
5667
查看次数

用于规范化数据的猫鼬吸气剂/设定器

我有User一个有username字段的架构.我希望此字段区分大小写,以便用户可以注册名称,例如BobDylan.但是,我需要我的架构来验证新条目,以检查是否没有重复,包括敏感,如bobdylan.

我的研究告诉我,我应该在模式中创建一个额外的字段来存储小写/大写版本,以便我可以轻松地检查它是否是唯一的.我的问题是,如何使用Mongoose API实现这一目标?

我尝试过使用一个set函数,例如:

UserSchema.path('username_lower_case').set(function(username_lower_case) {
  return this.username.toLowerCase()
});
Run Code Online (Sandbox Code Playgroud)

但是,此功能似乎没有运行.我基本上需要告诉username_lower_case它是什么username,但是小写.

normalization mongoose mongodb node.js express

6
推荐指数
1
解决办法
4011
查看次数