Поддержание порядка сортировки строк таблицы базы данных

Содержимое вашей таблицы переполняется, поэтому пробел появляется, если вы хотите удалить этот пробел, поэтому вам нужно уменьшить размер шрифта текста таблицы. размер шрифта: 12px;

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css">
	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.1/css/bootstrap-select.css" />

	<title>Blank</title>

   <style>
  a:hover {
  color: hotpink;
}

nav {
	background-color: #009fe3;
	width: 100%;
	box-sizing: content-box;
	}
	
body {
  margin:0;
	width: 100%;
}
@media only screen and (max-width: 425px) {
 .table thead th {
    font-size: 12px;
  }
}


</style>

</head>
<body>

 <nav class="navbar navbar-expand-lg navbar-dark">
	<div class='container-fluid'>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
    <div class="navbar-nav">
	  <a class="nav-item nav-link" href="/">A</a>
      <a class="nav-item nav-link" href="/f3">B</a>
	  <a class="nav-item nav-link" href="/f2">C</a>
	  <a class="nav-item nav-link" href='/f4'>D</a>
      <a class="nav-item nav-link active" href="/f1">E<span class="sr-only">(current)</span></a>
	  <a class="nav-item nav-link" href="/f5">F</a>
      
      
      </div>
    </div>
  </div>
  
</nav> 
   
	<div class='container-fluid'>
	
	<br>
	
	<h2>Heading</h2><small>some url</small>
	<table class="table table-hover">
  		<thead>
  			<tr>
   				<h2>Another heading</h2><small>Another url</small>
  			</tr>
    <tr>
      <th scope="col">Consectetur</th>
      <th scope="col">Adipiscing </th>
      <th scope="col">Tristique</th>
      <th scope="col">Porttitor </th>
      <th scope="col">Eleifend </th>
      
    </tr>

  		</thead>

  <tbody>
  	<tr>
      <td>vitae volutpat</td>
      <td>Duis mollis</td>
      <td>Nulla ultricies</td>
      <td>Vestibulum eleifend</td>
      <td>quis nibh</td>
    </tr>
  </tbody>
</table>
</div>

	<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
	<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.bundle.min.js"></script>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.1/js/bootstrap-select.min.js"></script>
</body>
</html>

11
задан skaffman 4 May 2010 в 22:44
поделиться

9 ответов

Если я понимаю Вашу проблему правильно; я использовал бы столбец, содержащий некоторый тип занимающего место индекса. Это число не должно быть уникальным. Необходимо будет придумать некоторый тип алгоритма для вычисления разряда.

Затем просто вид на занимающем место столбце, со вторичным столбцом для обработки занимающих место связей (возможно, создать дата или что-то).

8
ответ дан 3 December 2019 в 03:19
поделиться

Смоделируйте свою таблицу после структуры данных связанного списка. Избавьтесь от столбца "вида", вместо этого имейте next_article_id столбец, который указывает на следующую статью после него. Затем, когда Вы хотите добавить новую статью в положении 50, только необходимо обновить статью № 49 для указания на новую статью, затем указать, что новую статью к одной статье № 49 ранее указали.

5
ответ дан 3 December 2019 в 03:19
поделиться

Забудьте корректный - проблема, Вы хотите избежать моего не быть грандиозным предприятием, но, скорее просто пара операторов UPDATE в зависимости от Вашего RDBMS (я принимаю Oracle и что Вы перемещаете статью список):

UPDATE Articles
SET sort_number = sort_number + 1
WHERE sort_number BETWEEN :new_sort_number and :current_sort_number - 1;

UPDATE Articles
SET sort_number = :new_sort_number
WHERE article_id = :article_id;

Самый большой протест состоит в том, что функциональность НАБОРА не работает то же во всем RDBMS.

Если Вы действительно хотите считать корректным, рассмотреть пересмотр прежнего мнения вопроса с точки зрения структур данных – что Вы могли бы спрашивать, то, как реализовать связанный список в базе данных.

Альтернатива поддержанию Вашего столбца числа вида должна была бы поддержать родительский столбец ID. Это возможно более корректно, так как это сохраняет сериализацию Ваших данных, но недостаток состоит в том, что запросы данных не симпатичны или эффективны (думайте ПОДКЛЮЧЕНИЕ в Oracle, например).

Если вопрос, вместо этого, что является лучшим, возможно, Вы хотите рассмотреть и родительский столбец ID для правильности и денормализовывание данных путем получения значения столбца числа вида, возможно на родительские идентификационные данные или из первого решения.

10
ответ дан 3 December 2019 в 03:19
поделиться

Я пошел бы с ответом, большинство людей говорит, а именно, что у Вас должен быть отдельный столбец в Вашей таблице со значением вида/интереса записи. Если Вы хотите включить в своего рода аргумент времени, все еще оставаясь устойчивыми, Вы могли бы хотеть попытаться включить данные "представление" в течение данного периода времени.

Т.е. каждую ночь в полночь Вы создаете табличное представление своей основной таблицы, но только создаете ее статьи использования с прошедших 2 или 3 дней, затем поддерживаете количества вида/интереса строго на той таблице. Если кто-то выбирает более старую статью не в той таблице, (скажите от неделю назад), можно всегда вставлять ее в текущее представление. Таким образом, можно получить эффект возраста - прочь.

Самое главное должно было бы поддержать небольшие индексы на таблице, где вставляет, и обновления сортировки/интереса значений должны остаться относительно быстрыми. Вам придется только заплатить за сложные соединения однажды впереди во время создания представления, затем Вы могли сохранить его плоским для оптимизации для чрезмерных чтений. Каково макс., которое Вы имели бы в представлении, пара сотни, пара тысяча? Удары, пытающиеся отсортировать сто тысяч каждых раз, кто-то выполняет запрос.

0
ответ дан 3 December 2019 в 03:19
поделиться

Чтобы сделать это, мы устанавливаем строки, чтобы увеличить целые числа, затем использовать сохраненный proc для перемещения объектов. proc берет два args, текущий индекс объекта и новый индекс, в который Вы хотите переместить его. Это делает обновление, объекты устанавливают индекс = индекс + знак (@newidx - @oldidx), где индекс между itemMax (@newidx, @oldidx) и itemMin (@newidx, @oldidx) для обновления промежуточных объектов и затем обновление, которое изменяет фактический объект на новый индекс. Это не фактический код, просто из памяти. В нашей таблице у нас есть два столбца, идентификатор и индекс так, чтобы даже при том, что однажды Вы заканчиваете с двумя объектами в том же индексе, мы могли дифференцировать их идентификатором. Это могло обойтись путем выполнения обновления на объекте, который будет перемещен в и индекс-1, возможно, затем обновления остальных и наконец перемещения нового объекта в-1 к новому индексу.

0
ответ дан 3 December 2019 в 03:19
поделиться

Проблема, которой я хочу избежать, имеет, статьи пронумеровали 1,2,3,4.., 100

Я предложил бы, чтобы Вы не попытались, имея Ваш ключ сортировки быть Вашим первичным ключом или быть уникальными. Если они вводят, не уникально, у Вас может быть несколько объектов с тем же значением. Вы, вероятно, хотели бы просто заставить свой ключ сортировки быть простым масштабом 1-10.

Таким образом, возможно, вещи на уровне 10 были бы чрезвычайно интересны, 5 будет нормально, и 1 было бы чрезвычайно скучным. Когда что-то станет скучным или более интересным, просто скорректируйте значение своего ключа сортировки вниз или.

0
ответ дан 3 December 2019 в 03:19
поделиться

Используйте сортировку по убыванию, т.е. самое большое количество вида показывают на вершине.

Если более старая статья должна быть помещена сверху списка, просто установите его столбец Sort на МАКСА (Вид) +1. Никакая потребность перенумеровать целую таблицу.

Обновление после Ваших комментариев:

Измените порядок сортировки на плавающую точку. Если порядок сортировки статьи перестроен между двумя другими статьями, новое значение Вида установлено к ((Вид предыдущей статьи) + (Вид следующей статьи)) / 2. Иначе, Вид набора к MAX+1.

0
ответ дан 3 December 2019 в 03:19
поделиться

Все заголовки статьи показывают в списке, связывающемся с содержанием, таким образом, да все отсортированные объекты являются шоу сразу.

-1
ответ дан 3 December 2019 в 03:19
поделиться

Использование действительного числа кажется наиболее эффективным с точки зрения вычислений. Вы можете переместить ряд между двумя другими, добавив половину расстояния между двумя рядами. Чтобы переместить новую строку между рядами 1 и 2, вычислите newrow как newrow = row1 + (row2 - row1)/2.0. Однако из-за ограничений плавающей точки эта серия (при использовании двойной точности) сходится за 53 итерации. Поэтому в худшем случае вы можете сделать только 53 вставки (больше, если вы не всегда вставляете между последним newrow и row2). Это похоже на идею оставлять пробелы и заполнять их. Идея выполнения обновления менее эффективна, но не разрушается после определенного количества вставок. Вероятно, поможет индексирование столбца.

1
ответ дан 3 December 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: