我的数据库设计以前是相当线性的,所以我很难理解这可能是一个非常容易解决的问题.
我有一个"POSTS"表,其中包含可能是"CATEGORY"或"TOPIC"子项的帖子.定义"POSTS"表的外键的最佳方法是什么?
我想我可以有一个名为POST_CATEGORY_ID的列和一个名为"POST_TOPIC_ID的字段,它可以是可空的,但这听起来不对.当然有一个我想念的简单解决方案!
AUTHOR 表
Author_ID,PKFirst_NameLast_NameTITLES 表
TITLE_ID,PKNAMEAuthor_ID,FKDOMAIN 表
DOMAIN_ID,PKNAMETITLE_ID,FKREADERS 表
READER_ID,PKFirst_NameLast_NameADDRESSCITY_ID,FKPHONECITY 表
CITY_ID,PKNAMEBORROWING 表
BORROWING_ID,PKREADER_ID,fkTITLE_ID,fkDATEHISTORY 表
READER_IDTITLE_IDDATE_OF_BORROWINGDATE_OF_RETURNING
我正在设计一个角色有很多项目的游戏,这些项目可以是多种类型.有一个角色表,以及按类型细分的十二个不同的可能项目表(例如武器,装甲和各种其他项目类型).
我想创建一个表来保存这些项类型的实例(基本上是一个字符的项表),每一行都有一个来自字符表的外键,以指示哪个字符拥有该项的所有权.
起初我想我会在字符的项目表中创建外键 - 十二个项目表中的每一个都有一个键.但由于每个项目只能是一个"类型",这将导致每行中有11个空字段,这似乎是错误的.
什么是更好的方法?我还没有构建数据库,所以我可以接受其他不使用十二个项目表的库存想法,但是知道这一点:管理界面将允许用户根据需要添加/删除/修改每种类型的项目.
另外,我想坚持最好的规范化实践,所以我会忽略不可避免的"谁在乎?只做有效的工作并使用无效字段."
我正在制作一个简单的测验数据库,其中一个问题有一个答案和一个或多个图像文件,属于一个子主题,而该子主题又属于一个主题.此外,每个组可能属于三个级别之一.
这就是我设置数据库的方式:
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:更新了数据库描述.
请看一下这个图: 
一些说明:
谢谢.
我试图规范化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) 我当前的项目是一个带有布尔检索功能的高级标签数据库.正在使用类似的布尔表达式查询记录(例如在音乐数据库中):
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将识别已经缓存的子查询,但这不是主要目标.
我试图使用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找不到它?
我需要规范化一个字符串,如"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) 我想在许多光照条件下获得图像的RGB值.为了获得某种中立的场景,我想用一些预定义图像的RGB值来标准化RGB值.
让我解释.我有6个预定义的图像,我知道它们的确切平均RGB值.现在我将在不同的光照条件下拍摄未知图像.我还将在相同条件下拍摄预定义的6张图像.现在我的目标是通过将预定义图像的已知参考rgb值与从摄像机图像计算的值进行比较来定义归一化公式.使用此归一化参数,我将校准未知图像的RGB值.因此,无论光照条件如何,我都能以中性方式从未知图像中获得平均RGB值.
如何在Java中轻松实现这一目标.
我有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,但是小写.