Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
cca50665
Commit
cca50665
authored
Sep 14, 2001
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
merge
Docs/manual.texi: Auto merged
parents
16115af9
87000f6e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
54 additions
and
39 deletions
+54
-39
Docs/manual.texi
Docs/manual.texi
+54
-39
vio/test-ssl
vio/test-ssl
+0
-0
No files found.
Docs/manual.texi
View file @
cca50665
...
@@ -3710,7 +3710,7 @@ list in this manual. @xref{TODO}.
...
@@ -3710,7 +3710,7 @@ list in this manual. @xref{TODO}.
* Missing Transactions:: Transactions
* Missing Transactions:: Transactions
* Missing Triggers:: Triggers
* Missing Triggers:: Triggers
* Missing Foreign Keys:: Foreign Keys
* Missing Foreign Keys:: Foreign Keys
* Broken Foreign KEY::
Reasons NOT to Use Foreign Keys constraint
s
* Broken Foreign KEY::
Why We Did Not Implement Foreign Key
s
* Missing Views:: Views
* Missing Views:: Views
* Missing comments:: @samp{--} as the start of a comment
* Missing comments:: @samp{--} as the start of a comment
@end menu
@end menu
...
@@ -3993,61 +3993,70 @@ coded to avoid them.
...
@@ -3993,61 +3993,70 @@ coded to avoid them.
@node Broken Foreign KEY, Missing Views, Missing Foreign Keys, Missing functions
@node Broken Foreign KEY, Missing Views, Missing Foreign Keys, Missing functions
@subsubsection
Reasons NOT to Use Foreign Keys constraint
s
@subsubsection
Why We Did Not Implement Foreign Key
s
@cindex foreign keys,
reasons not to use
@cindex foreign keys,
why not implemented
There are so many problems with foreign key constraints that we don't
Many database scholars and programmers feel very strongly that
know where to start:
referential integrity should be enforced inside the database server. Indeed,
in many cases, this approach is very helpful. However, in talking with many
database users we have observed that foreign keys are often misused, which
can cause severe problems. Even when used properly, it is not a
magic solution for the referential integrity problem, although it does make
things easier in some cases.
Because of the above observations, we did not assign implementing foreign
keys a high priority. Our user base consisted of mostly of developers who
did not mind enforcing referential integerity inside the application code,
and in fact, preferred to do it that way because it gave them more control.
However, in the last couple of years, our user base has expanded a great deal
and we now have many users who would like to have the enforced referential
integrity support inside MySQL. So we will implement the foreign keys in
the near future, although at this point we cannot provide a definite
delivery date.
Some advantages of foreign key enforcement:
@itemize @bullet
@itemize @bullet
@item
@item
Foreign key constraints make life very complicated, because the foreign
Assuming proper design of the relations, foreign key constraints will make it
key definitions must be stored in a database and implementing them would
more difficult for a programmer to introduce an inconsistency into the
destroy the whole ``nice approach'' of using files that can be moved,
database
copied, and removed.
@item
@item
The speed impact is terrible for @code{INSERT} and @code{UPDATE}
Using cascading updates and deletes can simplify the client code
statements, and in this case almost all @code{FOREIGN KEY} constraint
checks are useless because you usually insert records in the right
tables in the right order, anyway.
@item
@item
There is also a need to hold locks on many more tables when updating one
Properly designed foreign key rules aid in documenting relations between
table, because the side effects can cascade through the entire database. It's
tables
MUCH faster to delete records from one table first and subsequently delete
@end itemize
them from the other tables.
Disadvantages:
@itemize @bullet
@item
@item
You can no longer restore a table by doing a full delete from the table
MySQL does not yet support enforced referential integrity, so if your
and then restoring all records (from a new source or from a backup).
application depends on it, you will not be able to use it with MySQL until
we implement this feature.
@item
@item
If you use foreign key constraints you can't dump and restore tables
Mistakes, that are easy to make in designing key relations, can cause severe
unless you do so in a very specific order.
problems, for example, circular rules, or the wrong combination of cascading
deletes.
@item
@item
It's very easy to do ``allowed'' circular definitions that make the
A properly written application will make sure internally that it is not
tables impossible to re-create each table with a single create statement,
violating referential integrity constraints before proceding with a query.
even if the definition works and is usable.
Thus, additionaly checks on the database level will only slow down performance
for such application.
@item
@item
It
's very easy to overlook @code{FOREIGN KEY ... ON DELETE} rules when
It
is not uncommon for a DBA to make such a complex topology of relations that
one codes an application. It's not unusual that one loses a lot of
it becomes very difficult, and in some cases impossible to backup or restore
i
mportant information just because a wrong or misused @code{ON DELETE} rule
.
i
ndividual tables
.
@end itemize
@end itemize
The only nice aspect of @code{FOREIGN KEY} is that it gives ODBC and some
other client programs the ability to see how a table is connected and to use
this to show connection diagrams and to help in building applications.
MySQL will soon store @code{FOREIGN KEY} definitions so that a
client can ask for and receive an answer about how the original
connection was made. The current @file{.frm} file format does not have
any place for it. At a later stage we will implement the foreign key
constraints for application that can't easily be coded to avoid them.
@node Missing Views, Missing comments, Broken Foreign KEY, Missing functions
@node Missing Views, Missing comments, Broken Foreign KEY, Missing functions
@subsubsection Views
@subsubsection Views
...
@@ -6411,6 +6420,12 @@ Please report bad or out-of-date mirrors to @email{webmaster@@mysql.com}.
...
@@ -6411,6 +6420,12 @@ Please report bad or out-of-date mirrors to @email{webmaster@@mysql.com}.
@uref{http://gd.tuwien.ac.at/db/mysql/, WWW}
@uref{http://gd.tuwien.ac.at/db/mysql/, WWW}
@uref{ftp://gd.tuwien.ac.at/db/mysql/, FTP}
@uref{ftp://gd.tuwien.ac.at/db/mysql/, FTP}
@item
@c EMAIL: ftpmaint@belnet.be (Antoine Delvaux)
@image{Flags/belgium} Belgium [BELNET] @
@uref{http://mysql.belnet.be/, WWW}
@uref{ftp://ftp.belnet.be/mirror/ftp.mysql.com/pub/mysql/, FTP}
@c @item
@c @item
@c Not ok 20000919; Old site (Matt)
@c Not ok 20000919; Old site (Matt)
@c EMAIL: delian@naturella.com (Delian Delchev)
@c EMAIL: delian@naturella.com (Delian Delchev)
...
@@ -6455,7 +6470,7 @@ Please report bad or out-of-date mirrors to @email{webmaster@@mysql.com}.
...
@@ -6455,7 +6470,7 @@ Please report bad or out-of-date mirrors to @email{webmaster@@mysql.com}.
@item
@item
@c removed 991020 (no DNS entry). New name 991026. Added 991121
@c removed 991020 (no DNS entry). New name 991026. Added 991121
@c Statistics at http://mirror.borsen.dk/
@c Statistics at http://mirror.borsen.dk/
@c EMAIL: guru@borsen.dk
(Jesper Angelo)
@c EMAIL: guru@borsen.dk (Jesper Angelo)
@image{Flags/denmark} Denmark [Borsen] @
@image{Flags/denmark} Denmark [Borsen] @
@uref{ http://mysql.borsen.dk/, WWW}
@uref{ http://mysql.borsen.dk/, WWW}
...
@@ -44734,7 +44749,7 @@ By default, MySQL searches are case-insensitive (although there are
...
@@ -44734,7 +44749,7 @@ By default, MySQL searches are case-insensitive (although there are
some character sets that are never case insensitive, such as @code{czech}).
some character sets that are never case insensitive, such as @code{czech}).
That means that if you search with @code{col_name LIKE 'a%'}, you will get all
That means that if you search with @code{col_name LIKE 'a%'}, you will get all
column values that start with @code{A} or @code{a}. If you want to make this
column values that start with @code{A} or @code{a}. If you want to make this
search case-sensitive, use something like @code{IN
DEX(col_name, "A")=0
} to
search case-sensitive, use something like @code{IN
STR(col_name, "A")=1
} to
check a prefix. Or use @code{STRCMP(col_name, "A") = 0} if the column value
check a prefix. Or use @code{STRCMP(col_name, "A") = 0} if the column value
must be exactly @code{"A"}.
must be exactly @code{"A"}.
vio/test-ssl
View file @
cca50665
No preview for this file type
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment