What causes flooding?
Obviously excess of rain will cause flooding. Rain over a period of time will cause the ground to be saturated. Then when more rain comes the ground can't soak up any moisture so the new rain runs off.
Building in the flood plain will cause flooding of course. People don't realize that the river won't always be at its normal low level. The river has different stages of flow. Drought, normal rain heavy rain excessive rain.
One thing to consider is how much is it raining upstream. All the rain in the watershed will come down the river at some point. Except for lakes and evaporation.
Building upstream will decrease the ability of the land to absorb water. Each parking lot, driveway and house was taken from the available acreage to absorb water. The water then that would have been held by the soil will now run off into the areas drainage system.
So a creek that at first, seemed like a peaceful creek and handled heavy rain easily will now be a raging tyrant in a slightly heavy rain because of the development upstream. People that have built houses by this picturesque stream now have a house next to an ugly monster during heavy rainfall.
Levies will hold flooding back. It will also allow the lowlands to be used. The problem with levies is they don't allow the low ground to store water to keep the flood manageable. Now when levies are in place the water that would have sat [stored] in low ground continues on down stream putting more pressure by increasing the flood potential down stream.
So it seems that flood protection works in moderate flood conditions but is counterproductive in high flood conditions. Now with levies, a 100 year flood event will occur more often then 100 years.
Instead of trying to protect against floods it is better to understand flooding as a part of life and not build in the flood plain. The flood plain should be used for nature and low cost recreational activities. Then after a flood these areas could be rebuilt such as ball diamonds, trails etc.