小编out*_*tis的帖子

将"Toxi"方式规范化是否真的值得?(3NF)

我正处于数据库设计的早期阶段,所以还没有最终结果,我正在使用"TOXI"3表设计作为我的线程,它有可选标签,但我不禁觉得加入是不是真的有必要,也许我需要依靠我的posts表中的一个简单的标签列,我可以在其中存储类似的varchar <tag>, <secondTag>.

所以回顾一下:

  • 是否值得在2个标签表上额外左连接的麻烦,而不是在我的posts表中只有一个标签列.
  • 有没有办法可以优化我的查询?

架构

CREATE TABLE `posts` (
    `post_id` INT UNSIGNED PRIMARY AUTO_INCREMENT,
    `post_name` VARCHAR(255)
) Engine=InnoDB;

CREATE TABLE `post_tags` (
    `tag_id` INT UNSIGNED PRIMARY AUTO_INCREMENT,
    `tag_name` VARCHAR(255)
) Engine=InnoDB;

CREATE TABLE `post_tags_map` (
    `map_id` INT PRIMARY AUTO_INCREMENT,
    `post_id` INT NOT NULL,
    `tags_id` INT NOT NULL,
    FOREIGN KEY `post_id` REFERENCES `posts` (`post_id`),
    FOREIGN KEY `post_id` REFERENCES `post_tags` (`tag_id`)
) Engine=InnoDB;
Run Code Online (Sandbox Code Playgroud)

样本数据

INSERT INTO `posts` (`post_id`, `post_name`)
  VALUES
(1, 'test');

INSERT INTO `post_tags` …
Run Code Online (Sandbox Code Playgroud)

mysql sql optimization normalization

5
推荐指数
1
解决办法
1277
查看次数

迭代器类型应该在这个C++模板中应该是什么?

在前一段时间处理一些图形代码时,我使用int作为底层坐标持有者编写了Rect和Region类,并且工作正常.Region实现为STL列表的简单类扩展,只包含一个Rects列表.

现在我还需要使用双精度作为底层坐标持有者的同类课程,并决定尝试将其模板化.所以我基本上以"智能方式"将"int"替换为"typename T"并修复了问题.

但是还有一个问题让我难过.我想通过在构成它的所有Rect上进行并集来计算Region的边界框.在没有模板化的情况下工作正常,但是当它被模板化时,g ++会在列表迭代器上产生扼流圈.

这是相关的代码:

// Rect class that always remains normalized
template <typename T>
class KRect
{
public:

    // Ctors
    KRect(void)
        : _l(0), _t(0), _r(0), _b(0)
    {
    }
    void unionRect(const KRect& r)
    {
        ...
    }

private:
    T _l, _t, _r, _b;
};

// Region class - this is very brain-dead
template <typename T>
class KRegion : public std::list< KRect<T> >
{
public:
    ...

    // Accessors
    KRect<T> boundingBox(void)
    {
        KRect<T> r;
        iterator i;
        for (i = this->begin(); i != …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance templates stl

5
推荐指数
1
解决办法
4498
查看次数

如何才能使Mac应用程序仅在菜单栏中显示图标?

我很擅长为Mac开发,我正在尝试编写一个Cocoa应用程序,它只存在于系统菜单栏中,并且不会出现在Dock中.Dropbox,Alfred和Quicksilver这样做(或者可以配置为执行此操作).谢谢.

macos cocoa objective-c menubar statusbar

5
推荐指数
0
解决办法
5172
查看次数

SQL查询仅适用于不同组的所有元素对

我有一个名为Survey的表,其中包含一个Group Column和一个Subject Column

CREATE TABLE survey (
  `group` INT NOT NULL,
  `subject` VARCHAR(16) NOT NULL,
  UNIQUE INDEX (`group`, `subject`)
);

INSERT INTO survey 
  VALUES
  (1, 'sports'),
  (1, 'history'),
  (2, 'art'),
  (2, 'music'),
  (3, 'math'),
  (3, 'sports'),
  (3, 'science')
;
Run Code Online (Sandbox Code Playgroud)

我试图找出一个查询,它将返回不属于同一组的所有主题对.所以从上面的例子中,我希望看到这些对在表中返回:

science - history  
science - art  
science - music  
history - math  
sports  - art  
sports  - music  
history - art  
history - music
Run Code Online (Sandbox Code Playgroud)

因此,查询不应返回:

sports - history  
Run Code Online (Sandbox Code Playgroud)

作为一个例子,因为他们都在第1组.

非常感谢.

mysql sql

5
推荐指数
1
解决办法
2534
查看次数

是否有可能覆盖"self"以指向python中self.method中的另一个对象?

class Wrapper(object):
    def __init__(self, o):
        # get wrapped object and do something with it
        self.o = o
    def fun(self, *args, **kwargs):
        self = self.o # here want to swap
        # or some low level C api like
        # some_assign(self, self.o)
        # so that it swaps id() mem addr to self.o
        return self.fun(*args, **kwargs) # and now it's class A

class A(object):
    def fun(self):
        return 'A.fun'

a = A()
w = Wrapper(a)
print type(w) # wrapper
print w.fun() # some operation …
Run Code Online (Sandbox Code Playgroud)

python python-c-api

5
推荐指数
1
解决办法
4235
查看次数

正则表达式需要将字符串拆分为"."

我需要在Javascript中使用正则表达式.我有一个字符串:

'*window.some1.some\.2.(a.b + ")" ? cc\.c : d.n [a.b, cc\.c]).some\.3.(this.o.p ? ".mike." [ff\.]).some5'
Run Code Online (Sandbox Code Playgroud)

我希望按周期分割这个字符串,以便得到一个数组:

[
    '*window',
    'some1',
    'some\.2',   //ignore the . because it's escaped
    '(a.b ? cc\.c : d.n [a.b, cc\.c])',  //ignore everything inside ()
    'some\.3',
    '(this.o.p ? ".mike." [ff\.])',
    'some5'
]
Run Code Online (Sandbox Code Playgroud)

什么正则表达式会这样做?

javascript regex

5
推荐指数
1
解决办法
291
查看次数

如何在使用PDO时获取原始表/列名称?

使用PHP的mysqli扩展,我可以使用该fetch_field()方法通过orgnameorgtable在结果中获取列和表的原始(非锯齿)名称.PDO提供了该方法getColumnMeta(),但不提供有关原始表和列名称的信息; 它只返回别名.

有什么替代方法可以通过PDO获取此信息吗?我一直在考虑从SQL查询中解析信息,但我希望有更漂亮的解决方案......

SELECT id AS col1, session AS col2 FROM sessions AS table1;
Run Code Online (Sandbox Code Playgroud)

结果使用PDOStatement::getColumnMeta():

Array
(
    [native_type] => LONG
    [flags] => Array
        (
            [0] => not_null
            [1] => primary_key
        )

    [table] => table1
    [name] => col1
    [len] => 10
    [precision] => 0
    [pdo_type] => 2
)
Array
(
    [native_type] => VAR_STRING
    [flags] => Array
        (
            [0] => not_null
            [1] => unique_key
        )

    [table] => table1
    [name] => col2
    [len] …
Run Code Online (Sandbox Code Playgroud)

php meta mysqli pdo field

5
推荐指数
1
解决办法
1241
查看次数

如何在编译器中实现反斜杠转义序列?

我只是想知道在编译器中如何实现反斜杠转义序列?如果我们在字符串中写"\n",编译器如何用新行字符替换它?编译器如何用退格符替换"\ b"?

我问,因为我写了代码:

#include<stdio.h>
main()
{
    printf("Hello \c");
}
Run Code Online (Sandbox Code Playgroud)

输出是:

Hello 
Exited: ExitFailure 7 

我在键盘中运行它,我正在通过KnR书籍问题编号1.2.

提前致谢

c compiler-construction operating-system embedded-linux

5
推荐指数
2
解决办法
1246
查看次数

MySQL 使用 IN/FIND_IN_SET 在子查询中读取多行

我有两个表,位置和位置组

CREATE TABLE locations (
    location_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(63) UNIQUE NOT NULL
);

INSERT INTO locations (name)
  VALUES
('london'),
('bristol'),
('exeter');

CREATE TABLE location_groups (
    location_group_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    location_ids VARCHAR(255) NOT NULL,
    user_ids VARCHAR(255) NOT NULL,
    name VARCHAR(63) NOT NULL,
);

INSERT INTO location_groups (location_ids, user_ids, name)
  VALUES
('1', '1,2,4', 'south east'),
('2,3', '2', 'south west');
Run Code Online (Sandbox Code Playgroud)

我想要做的是返回给定 user_id 存在的所有 location_groups 的所有 location_ids。我正在使用 CSV 将 location_ids 和 user_ids 存储在 location_groups 表中。我知道这不是规范化的,但这就是数据库的方式,它超出了我的控制。

我目前的查询是:

SELECT location_id …
Run Code Online (Sandbox Code Playgroud)

mysql subquery in-subquery

5
推荐指数
1
解决办法
7585
查看次数

如何在同一个表的同一列上使用不同的where子句连接SQL语句

我在sqlite中有2个语句

第一份声明:

Select SUM(GrossQty) As GQTY, SUM(NetQty) As NQTY
  From NSales 
  Where IMonth=5 And IYear=2012 And IDay>15
Run Code Online (Sandbox Code Playgroud)

结果:

GQty  NQty
 30    25

第二个声明

Select SUM(GrossQty) As GQTY, SUM(NetQty) As NQTY
  From NSales 
  Where IMonth=6 And IYear=2012 And IDay<10
Run Code Online (Sandbox Code Playgroud)

第二个结果:

GQty  NQty
 20    15

我如何组合这些语句,以便将这些结果添加到一起?

期望的结果:

GQty  NQty
 50    40

sql sqlite

5
推荐指数
1
解决办法
2261
查看次数