这是我的PHP应用程序所需的流程(是的,它很模糊,但这样更容易):
(对象和集合是多对多的,因此有一个对象表,一个集合表和一个与这两者相关的表。)
一些样本流程:
步骤1和3很简单。第2步是我不知道如何继续的地方。查询包含那些确切ID的集合的关系似乎不必要数据库,所以我即将发布一些明显的解决方案,如简单的ID列表和散列,但我也想知道是否还有更多那里的理想解决方案。
谢谢!
答案 0 :(得分:0)
一个明显的解决方案是在集合的数据库行中保存子ID列表,例如1111,1112,1113,1114,1115
。它快速,简单,并且保证了唯一性,但是我认为比较这样的列表会造成不必要的CPU负担,特别是如果它们变长,更不用说在存储空间方面存在相当多的重复。
答案 1 :(得分:0)
另一个明显的答案是采用相同的连接字符串并采用MD5哈希 - 快速简便,但运行(授予的,小的)冲突风险。哈希是否值得使用较短字符串的性质,即使我可以轻松地100%保证不会因没有散列而发生冲突?
答案 2 :(得分:0)
在我的申请中,我将执行此步骤:
$collection = array('111', '112', '113', '114');
我将分两步检查新用户输入。第一步是查看它是否已存在于数据库中。如果没有,则插入。否则忽略:
foreach ( $inputs as $input ) { if ( ! in_array($input, $collection) ) { //do insert here } }
然后在第二个循环中,我反向执行,删除用户未选择的数据。
foreach ( $collection as $data ) { if ( ! in_array($data, $inputs) ) { //do delete here } }
在您的情况下,您可能需要或可能不需要第二个循环。我需要这个,因为我将输入作为复选框,用户可以选择激活/取消激活,因此我将其翻译为插入和删除。