数据库优化设计_PHP教程
很多时候,我们在项目中,可能会随着需求的不断更改,我们需要在原有的库表结构中增加字段,从而满足我们的业务需求。
举一个简单的例子:
我需要一张数据库表,用来存储某个网站的用户信息。该用户信息需要包括(帐号是否是活跃帐号、帐号是否绑定邮箱、帐号是否购买过产品、帐号是否过期....等等),一般情况下,我们可能会这么设计这张库表:
<span CREATE</span> <span TABLE</span> <span '</span><span ACCOUNT</span><span '</span><span ( `ID` </span><span int</span>(<span 22</span>) <span NOT</span> <span NULL</span> AUTO_INCREMENT, <span --</span><span 自增id</span> `F001` <span TINYINT</span>(<span 1</span>) <span NOT</span> <span NULL</span>, <span --</span><span 是否活跃(1:是/0:否)</span> `F002` <span TINYINT</span>(<span 1</span>) <span NOT</span> <span NULL</span>, <span --</span><span 是否绑定 (1:是/0:否)</span> `F003` <span TINYINT</span>(<span 1</span>) <span NOT</span> <span NULL</span>, <span --</span><span 是否购买产品 (1:是/0:否)</span> `F004` <span TINYINT</span>(<span 1</span>) <span NOT</span> <span NULL</span>, <span --</span><span 是否过期 (1:是/0:否)</span> <span PRIMARY</span> <span KEY</span>(<span '</span><span ID</span><span '</span><span ) ) ENGINE</span><span =</span>InnoDB AUTO_INCREMENT<span =</span><span 1</span> <span DEFAULT</span> CHARSET<span =</span>utf8;
如果按照以上方法进行设计,那么当需求变更,如:增加一个字段,帐号是否有效。那么我们就需要再增加一个字段`F005`,这样会导致管理起来非常麻烦,当新增字段时,需要去更新所有或者历史数据,很容易导致数据丢失。
那么,怎么去解决这个问题,让数据字段间的关联影响尽可能的降低。现在有一种办法就是,将这些字段整合全部放到一个字段中。如:`FLAG`字段 按10进制进行存储(第一位:1:活跃,0:非活跃。第二位:1:绑定,2:未绑定。第三位:1:购买过产品,0:未购买....),解释一下:如果这个字段的值是5,转换成二进制是 101,第一位是1,第二位0,第三位1.那么就表示该帐号是“活跃、未绑定、且购买过产品”。这种方式有什么好处呢,好处在于各个类型之间的关联关系很小,不会因为更新一个字段类型而影响了其他字段。那么,这样设计,该如何查询呢? 按位与,具体情况可以举一个例子,当我需要查询所有购买过产品,而且活跃的帐号,也即(第一位和第三位为1),其他位我们填0,即101=5:
sql语句查询:
<span SELECT</span> <span *</span> <span FROM</span> ACCOUNT <span WHERE</span> F005<span &</span><span 5</span><span ></span><span 0</span>;
以上sql语句就能查询出购买过产品而且活跃的帐号。
那么,更新修改的时候只需要在后台程序中将各二进制位更新为需求的值就好了,例如,刚才的购买过且活跃,即101,要更改为购买过,但不是活跃的话,那么就用 (5&1)=1,从而实现将第三位置0。这里提供一个PHP函数可以很好的处理该程序业务。
<?<span php </span><span /*</span><span * * 取按位与要写入的数据 * @param $param 原值 * @param $postData 提交的数据key=>value,key必须从1开始的数据,value必须为0或者(key-1)次方数 key代表位 </span><span */</span> <span function</span> getExtValue(<span $param</span> = 0,<span $postData</span> = <span array</span><span ()){ </span><span if</span>(!<span empty</span><span $postData</span><span ){ </span><span foreach</span>(<span $postData</span> <span as</span> <span $key</span>=><span $value</span><span ){ </span><span $tmp1</span> = <span pow</span>(2,(<span $key</span>-1<span )); </span><span if</span> (<span empty</span>(<span $key</span>) || !<span is_numeric</span>(<span $key</span>) || !<span is_numeric</span>(<span $value</span>) || (<span $value</span> != 0 && <span $value</span> !=<span $tmp1</span><span )){ </span><span continue</span><span ; } </span><span $param</span> = (<span $param</span> & (0xffff^<span $tmp1</span>)) | <span $value</span><span ; } } </span><span return</span> <span $param</span><span ; }</span>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Gabungan Vue.js dan ASP.NET menyediakan petua dan cadangan untuk pengoptimuman prestasi dan pengembangan aplikasi web Dengan perkembangan pesat aplikasi web, pengoptimuman prestasi telah menjadi tugas yang sangat diperlukan dan penting untuk pembangun. Sebagai rangka kerja bahagian hadapan yang popular, Vue.js digabungkan dengan ASP.NET boleh membantu kami mencapai pengoptimuman dan pengembangan prestasi yang lebih baik. Artikel ini akan memperkenalkan beberapa petua dan cadangan, serta memberikan beberapa contoh kod. 1. Kurangkan permintaan HTTP Bilangan permintaan HTTP secara langsung mempengaruhi kelajuan pemuatan aplikasi web. lulus

Penterjemah |. Disemak oleh Chen Jun |. Pada tahun 1990-an, apabila orang menyebut pengaturcaraan perisian, ia biasanya bermaksud memilih editor, menyemak kod ke dalam pangkalan kod CVS atau SVN, dan kemudian menyusun kod ke dalam fail boleh laku. Persekitaran pembangunan bersepadu (IDE) yang sepadan seperti Eclipse dan Visual Studio boleh menyepadukan pengaturcaraan, pembangunan, dokumentasi, pembinaan, ujian, penggunaan dan langkah-langkah lain ke dalam kitaran hayat pembangunan perisian yang lengkap (SDLC), sekali gus meningkatkan kecekapan pemaju. Dalam tahun-tahun kebelakangan ini, pengkomputeran awan yang popular dan alat automasi DevSecOps telah meningkatkan keupayaan komprehensif pembangun, menjadikannya lebih mudah bagi lebih banyak perusahaan untuk membangun, menggunakan dan menyelenggara aplikasi perisian. Hari ini, AI generatif ialah pembangunan generasi akan datang

Bagaimana untuk menggunakan dan mengoptimumkan kolam sambungan MySQL dengan betul dalam program ASP.NET? Pengenalan: MySQL ialah sistem pengurusan pangkalan data yang digunakan secara meluas yang menampilkan prestasi tinggi, kebolehpercayaan dan kemudahan penggunaan. Dalam pembangunan ASP.NET, menggunakan pangkalan data MySQL untuk penyimpanan data adalah keperluan biasa. Untuk meningkatkan kecekapan dan prestasi sambungan pangkalan data, kami perlu menggunakan dan mengoptimumkan kumpulan sambungan MySQL dengan betul. Artikel ini akan memperkenalkan cara menggunakan dan mengoptimumkan kumpulan sambungan MySQL dengan betul dalam program ASP.NET.

Bagaimana untuk menyambung semula ke MySQL dalam program ASP.NET? Dalam pembangunan ASP.NET, adalah sangat biasa untuk menggunakan pangkalan data MySQL. Walau bagaimanapun, disebabkan oleh sebab rangkaian atau pelayan pangkalan data, sambungan pangkalan data kadangkala mungkin terganggu atau tamat masa. Dalam kes ini, untuk memastikan kestabilan dan kebolehpercayaan program, kami perlu mewujudkan semula sambungan selepas sambungan diputuskan. Artikel ini akan memperkenalkan cara menyambung semula sambungan MySQL dalam program ASP.NET. Untuk merujuk ruang nama yang diperlukan terlebih dahulu, rujuknya di kepala fail kod

Gabungan Vue.js dan ASP.NET membolehkan pembangunan dan penggunaan aplikasi peringkat perusahaan Dalam bidang teknologi Internet yang pesat membangun hari ini, pembangunan dan penggunaan aplikasi peringkat perusahaan telah menjadi semakin penting. Vue.js dan ASP.NET ialah dua teknologi yang digunakan secara meluas dalam pembangunan bahagian hadapan dan belakang. Menggabungkannya boleh membawa banyak kelebihan kepada pembangunan dan penggunaan aplikasi peringkat perusahaan. Artikel ini akan memperkenalkan cara menggunakan Vue.js dan ASP.NET untuk membangunkan dan menggunakan aplikasi peringkat perusahaan melalui contoh kod. Pertama, kita perlu memasang

Bagaimana untuk mengkonfigurasi dan menggunakan kolam sambungan MySQL dengan betul dalam program ASP.NET? Dengan perkembangan Internet dan peningkatan jumlah data, permintaan untuk capaian pangkalan data dan sambungan juga meningkat. Untuk meningkatkan prestasi dan kestabilan pangkalan data, pengumpulan sambungan telah menjadi teknologi penting. Artikel ini terutamanya memperkenalkan cara mengkonfigurasi dan menggunakan kumpulan sambungan MySQL dengan betul dalam program ASP.NET untuk meningkatkan kecekapan dan kelajuan tindak balas pangkalan data. 1. Konsep dan fungsi penyatuan sambungan adalah teknologi yang menggunakan semula sambungan pangkalan data. Ia digunakan pada permulaan program.

Bagaimana untuk menggunakan dan mengoptimumkan prestasi transaksi kumpulan sambungan MySQL dengan betul dalam program ASP.NET? Dalam program ASP.NET, transaksi pangkalan data adalah bahagian yang sangat penting. Transaksi memastikan ketekalan dan integriti pangkalan data di samping memberikan prestasi yang lebih baik. Apabila menggunakan pangkalan data MySQL, adalah penting untuk menggunakan kumpulan sambungan untuk mengurus sumber sambungan dan mengoptimumkan prestasi. Mula-mula, mari kita fahami secara ringkas konsep kumpulan sambungan MySQL. Kolam sambungan ialah kumpulan penimbal bagi sekumpulan sambungan Dengan pra-memulakan bilangan tertentu

Objek terbina dalam ASP.NET termasuk "Permintaan", "Respons", "Sesi", "Pelayan", "Aplikasi", "HttpContext", "Cache", "Trace", "Cookie" dan "Server.MapPath": 1. Permintaan, menunjukkan permintaan HTTP yang dikeluarkan oleh klien 2. Respons: menunjukkan respons HTTP yang dikembalikan oleh pelayan web kepada pelanggan, dsb.
