Home php教程 php手册 数据库优化设计

数据库优化设计

Jun 13, 2016 am 09:40 AM
aspnet software programming

  很多时候,我们在项目中,可能会随着需求的不断更改,我们需要在原有的库表结构中增加字段,从而满足我们的业务需求。

  举一个简单的例子:

    我需要一张数据库表,用来存储某个网站的用户信息。该用户信息需要包括(帐号是否是活跃帐号、帐号是否绑定邮箱、帐号是否购买过产品、帐号是否过期....等等),一般情况下,我们可能会这么设计这张库表:

  

<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;
Copy after login

  如果按照以上方法进行设计,那么当需求变更,如:增加一个字段,帐号是否有效。那么我们就需要再增加一个字段`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>;
Copy after login

  以上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>
Copy after login
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

The combination of Vue.js and ASP.NET provides tips and suggestions for performance optimization and expansion of web applications. The combination of Vue.js and ASP.NET provides tips and suggestions for performance optimization and expansion of web applications. Jul 29, 2023 pm 05:19 PM

The combination of Vue.js and ASP.NET provides tips and suggestions for performance optimization and expansion of web applications. With the rapid development of web applications, performance optimization has become an indispensable and important task for developers. As a popular front-end framework, Vue.js combined with ASP.NET can help us achieve better performance optimization and expansion. This article will introduce some tips and suggestions, and provide some code examples. 1. Reduce HTTP requests The number of HTTP requests directly affects the loading speed of web applications. pass

MySQL connection pool usage and optimization techniques in ASP.NET programs MySQL connection pool usage and optimization techniques in ASP.NET programs Jun 30, 2023 pm 11:54 PM

How to correctly use and optimize the MySQL connection pool in ASP.NET programs? Introduction: MySQL is a widely used database management system that features high performance, reliability, and ease of use. In ASP.NET development, using MySQL database for data storage is a common requirement. In order to improve the efficiency and performance of database connections, we need to correctly use and optimize the MySQL connection pool. This article will introduce how to correctly use and optimize the MySQL connection pool in ASP.NET programs.

Ten ways generative AI will change software development Ten ways generative AI will change software development Mar 11, 2024 pm 12:10 PM

Translator | Reviewed by Chen Jun | Chonglou In the 1990s, when people mentioned software programming, it usually meant choosing an editor, checking the code into the CVS or SVN code base, and then compiling the code into an executable file. Corresponding integrated development environments (IDEs) such as Eclipse and Visual Studio can integrate programming, development, documentation, construction, testing, deployment and other steps into a complete software development life cycle (SDLC), thus improving the work of developers. efficiency. In recent years, popular cloud computing and DevSecOps automation tools have improved developers' comprehensive capabilities, making it easier for more enterprises to develop, deploy and maintain software applications. Today, generative AI is the next generation development

How to reconnect to MySQL in ASP.NET program? How to reconnect to MySQL in ASP.NET program? Jun 29, 2023 pm 02:21 PM

How to reconnect to MySQL in ASP.NET program? In ASP.NET development, it is very common to use the MySQL database. However, due to network or database server reasons, the database connection may sometimes be interrupted or time out. In this case, in order to ensure the stability and reliability of the program, we need to re-establish the connection after the connection is disconnected. This article will introduce how to reconnect MySQL connections in ASP.NET programs. To reference the necessary namespaces first, reference them at the head of the code file

The combination of Vue.js and ASP.NET enables the development and deployment of enterprise-level applications The combination of Vue.js and ASP.NET enables the development and deployment of enterprise-level applications Jul 29, 2023 pm 02:37 PM

The combination of Vue.js and ASP.NET enables the development and deployment of enterprise-level applications. In today's rapidly developing Internet technology field, the development and deployment of enterprise-level applications has become more and more important. Vue.js and ASP.NET are two technologies widely used in front-end and back-end development. Combining them can bring many advantages to the development and deployment of enterprise-level applications. This article will introduce how to use Vue.js and ASP.NET to develop and deploy enterprise-level applications through code examples. First, we need to install

How to correctly configure and use MySQL connection pool in ASP.NET program? How to correctly configure and use MySQL connection pool in ASP.NET program? Jun 29, 2023 pm 12:56 PM

How to correctly configure and use MySQL connection pool in ASP.NET program? With the development of the Internet and the increase in data volume, the demand for database access and connections is also increasing. In order to improve the performance and stability of the database, connection pooling has become an essential technology. This article mainly introduces how to correctly configure and use the MySQL connection pool in ASP.NET programs to improve the efficiency and response speed of the database. 1. The concept and function of connection pooling. Connection pooling is a technology that reuses database connections. At the beginning of the program,

What are the built-in objects in aspnet? What are the built-in objects in aspnet? Nov 21, 2023 pm 02:59 PM

The built-in objects in ASP.NET include "Request", "Response", "Session", "Server", "Application", "HttpContext", "Cache", "Trace", "Cookie" and "Server.MapPath": 1. Request, indicating the HTTP request issued by the client; 2. Response: indicating the HTTP response returned by the web server to the client, etc.

Recommended configuration for ASP.NET development using Visual Studio on Linux Recommended configuration for ASP.NET development using Visual Studio on Linux Jul 06, 2023 pm 08:45 PM

Overview of the recommended configuration for using Visual Studio for ASP.NET development on Linux: With the development of open source software and the popularity of the Linux operating system, more and more developers are beginning to develop ASP.NET on Linux. As a powerful development tool, Visual Studio has always occupied a dominant position on the Windows platform. This article will introduce how to configure VisualStudio for ASP.NE on Linux

See all articles